Client-Side Memory Management for Console Workspaces

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Client-side memory management in component-driven console applications faces challenges in balancing memory usage and page load times, particularly when handling multiple workspaces with varying data requirements, leading to potential system crashes due to memory constraints.

Innovation Solution

Implementing a memory management system that includes monitoring memory usage, caching structures for metadata and data, and analytics to optimize memory allocation by using a Least Recently Used algorithm to remove less-used data, allowing for full rendering, meta/data caching, or uncached states based on user needs and memory availability.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If all record data from each project is loaded into memory at the client side, then fast access and switching between projects is achieved, but memory constraints are exceeded causing system crashes

Engineering Contradiction:
Improvepage load timeVSAvoidmemory usage
Core Design Contradiction:
SpeedVSQuantity of substance

Solution Approach 1:

The patent applies local quality by differentiating memory allocation strategies for different data types (metadata vs. record data) and different workspace states. Metadata is cached in a dedicated metadata cache for all workspaces, while record data is selectively loaded based on individual workspace needs and memory availability, allowing optimized memory distribution rather than uniform allocation

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The system performs preliminary actions by pre-loading and caching metadata for all workspaces before they are accessed. This allows when a workspace is activated, the metadata is already available in the metadata cache, reducing the initial loading time. Additionally, the system proactively monitors memory usage and pre-evicts less frequently used workspaces before memory constraints are critically reached

Inventive Principle:
Principle #10Preliminary action

2Adaptability or versatility

If memory is allocated for multiple workspaces simultaneously, then users can switch between projects without delays, but the system may crash due to exceeding memory limitations

Engineering Contradiction:
Improveworkspace switching capabilityVSAvoidsystem stability
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent implements dynamics through adaptive memory management that continuously monitors memory usage and dynamically adjusts the number of cached workspaces. The system can add or remove workspaces from the cache based on current memory conditions and access patterns, making the memory allocation flexible rather than static. This allows the system to maintain stability while supporting multiple workspaces

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system employs feedback mechanisms by continuously monitoring memory usage metrics and using this information to make real-time decisions about workspace caching. When memory usage approaches thresholds, the system triggers eviction of less frequently used workspaces. This closed-loop control ensures the system adapts to memory conditions and maintains stability under varying loads

Inventive Principle:
Principle #23Feedback

3Quantity of substance

If caching structures are implemented for metadata and data, then memory allocation is optimized, but complex memory management algorithms are required

Engineering Contradiction:
Improvememory allocation efficiencyVSAvoidmemory management system complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent applies segmentation by dividing the memory management system into distinct components: a metadata cache for storing workspace metadata, separate record data storage for individual workspace data, and an eviction manager for handling memory pressure. This modular segmentation simplifies the overall complexity by breaking down the monolithic memory management problem into manageable, independent modules with specific responsibilities

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The eviction manager serves as an intermediary component that mediates between the metadata cache, record data storage, and memory constraints. It monitors memory usage and orchestrates the eviction of less frequently used workspaces when memory pressure is detected, acting as a buffer that simplifies the interaction between caching mechanisms and memory limitations without requiring complex integrated management

Inventive Principle:
Principle #24Intermediary (Mediator)

4Quantity of substance

If record data is downloaded from server with each switch between records, then memory usage is minimized, but significant delays occur for users waiting for data

Engineering Contradiction:
Improveclient-side memory usageVSAvoiddata loading time
Core Design Contradiction:
Quantity of substanceVSLoss of time

Solution Approach 1:

The patent implements the nested doll principle by creating a hierarchical caching structure where metadata is cached at an outer level for all workspaces, and record data is cached at an inner level for individually activated workspaces. This nested arrangement allows the system to leverage the outer metadata cache to quickly determine what data should be loaded, while maintaining inner-level caches for frequently accessed record data, optimizing both memory efficiency and load speed

Inventive Principle:
Principle #7Nested doll (Nesting)

Data Source

PatentUS10963307B2Client-side memory management in component-driven console applications
Publication Date: 2021.03.30 SALESFORCE INC
  • US10963307B2 patent drawing
  • US10963307B2 patent drawing
  • US10963307B2 patent drawing

AI summary

Embodiments regard client-side memory management in component-driven console applications. An embodiment of one or more storage mediums include instructions for performing processing of a console application on an apparatus, including downloading records from a server for a set of one or more of multiple workspaces and opening the set of workspaces in response to request by a user, and switching an active workspace from a first workspace to a second workspace of the plurality of workspaces in response to a request from the user; monitoring memory usage for the plurality of workspaces and monitoring a state of the console application; and managing the memory allocation for the console application based at least in part on the monitored memory usage and console application state.