Memory Allocator Evacuating Large Objects to Non-Volatile Storage
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Large-scale software applications often face memory leaks, leading to significant memory bloat due to large objects that are not efficiently managed by existing development tools, making it difficult to eliminate memory leaks and reduce resource consumption.
Innovation Solution
A memory allocator that splits memory into two heaps for small and large objects, using an LRU algorithm to identify and evacuate large, unused objects from volatile memory to non-volatile storage, while setting read/write protection to restore them on demand, thereby reducing memory usage and managing memory at the object level.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If large objects are kept in volatile memory for quick access, then application performance is improved, but memory usage increases and memory bloat occurs
Solution Approach 1:
The patent segments memory management into two distinct heaps: a small heap for frequently accessed objects and a large heap for less frequently accessed large objects. This segmentation allows the system to keep only essential small objects in volatile memory while moving larger, less frequently used objects to non-volatile storage, thereby reducing memory usage while maintaining performance for critical operations.
Solution Approach 2:
The patent introduces a new dimension to memory management by utilizing non-volatile storage (disk) as an extended memory space. Objects can be evacuated from volatile memory to non-volatile storage and restored on demand, effectively adding a temporal and spatial dimension to memory management that allows performance optimization without being constrained by volatile memory capacity.
2Reliability
If memory protection is set on evacuated memory addresses, then memory leak tolerance is improved, but access handling complexity increases
Solution Approach 1:
The patent implements a feedback mechanism through signal handlers that monitor access attempts to evacuated memory addresses. When protected memory is accessed, the signal handler detects the violation and automatically triggers restoration of the object from non-volatile storage, providing feedback-based error handling that tolerates memory leaks while maintaining system reliability.
Solution Approach 2:
The memory management system provides self-service by automatically restoring evacuated objects when their memory addresses are accessed, even after being moved to non-volatile storage. The signal handler mechanism enables the system to self-correct access violations without external intervention, making the memory allocator robust to memory leaks.
3Quantity of substance
If objects are evacuated from volatile to non-volatile memory, then memory bloat is reduced, but access speed decreases
Solution Approach 1:
The patent applies preliminary action by pre-evacuating large, less frequently accessed objects from volatile to non-volatile memory based on usage patterns (e.g., LRU algorithm). This preliminary evacuation reduces memory bloat in advance, and objects are restored to volatile memory only when actually needed, optimizing the balance between memory usage and access speed.
Solution Approach 2:
The patent applies local quality by differentiating memory management strategies for different object types and access patterns. Frequently accessed small objects remain in volatile memory with fast access, while less frequently accessed large objects are evacuated to non-volatile storage. This localized differentiation optimizes both memory utilization and access performance for different object categories.
Data Source
AI summary
The subject technology discloses configurations for selecting a set of objects stored in volatile memory that have not been recently used by the application in which each object from among the set of object resides at a respective range of memory addresses in the volatile memory and each object was created by the application. Memory protection is set on the respective range of addresses in the volatile memory for each object from among the set of objects in which the memory protection flags the respective range of addresses for handling when the application subsequently performs a read or write operation to the respective range of addresses. The subject technology copies the set of objects from the volatile memory to a non-volatile memory. The respective range of memory addresses in the volatile memory are freed for each object from among the set of objects.


