Long-Lived Object Memory Allocation via Segmented Areas

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing memory allocation methods in computer programming do not effectively utilize information about the expected lifespan of software objects, leading to frequent garbage collections for both short-lived and long-lived objects, resulting in inefficient memory management and increased computational costs.

Innovation Solution

Implementing a method that tags classes of data structures as long-lived or short-lived, allowing memory allocation from separate areas with different allocation times, using a marker interface or annotation to identify long-lived objects and allocate memory accordingly, thereby reducing unnecessary garbage collections.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If memory is allocated uniformly for all objects regardless of expected lifespan, then memory allocation is simple, but garbage collection frequency increases and computational cost increases

Engineering Contradiction:
Improvememory allocation efficiencyVSAvoidgarbage collection frequency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments the object lifecycle management by introducing a marker interface (e.g., LongLivedObject) that divides objects into different categories (short-lived and long-lived). This segmentation allows the system to apply different memory management strategies to different object types, reducing unnecessary garbage collections for long-lived objects while maintaining simple allocation for short-lived ones.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies preliminary action by tagging objects with the LongLivedObject marker interface at allocation time based on expected lifespan. This pre-categorization enables the garbage collector to skip or reduce collections for marked objects, avoiding the need for complex runtime analysis and reducing overall GC frequency before it becomes a problem.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If garbage collection is performed frequently to reduce memory fragmentation, then memory management is improved, but computational overhead increases

Engineering Contradiction:
Improvememory management qualityVSAvoidcomputational overhead
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The patent applies partial action by performing garbage collection only on non-marked objects or reducing collection frequency for marked long-lived objects. Instead of universally collecting all objects, the system selectively applies GC only where necessary, reducing computational overhead while maintaining memory management quality for objects that actually need collection.

Inventive Principle:
Principle #16Partial or excessive action

3Reliability

If stop-the-world phase is used during garbage collection to ensure correctness, then memory consistency is maintained, but system throughput decreases

Engineering Contradiction:
Improvememory consistencyVSAvoidsystem throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent extracts long-lived objects from the standard garbage collection process by using the LongLivedObject marker interface to identify and exclude them from frequent collections. This separation allows the GC to focus only on short-lived objects, maintaining memory consistency for collected objects while avoiding stop-the-world pauses for long-lived objects, thus preserving system throughput.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS10120796B2Memory allocation for long-lived objects
Publication Date: 2018.11.06 SAP SE
  • US10120796B2 patent drawing
  • US10120796B2 patent drawing
  • US10120796B2 patent drawing

AI summary

Managing memory allocations in a computer system may include tagging a class of data structures with a tag that identities a longer memory-allocation time for objects that correspond to the class. In response to a memory-allocation request for an object, whether or not the object is associated with the tag can be determined through the class. If the object is not associated with the tag, memory can be allocated for the object from a first memory-allocation area that corresponds to a shorter memory-allocation time, and if the object is associated with the tag, memory can be allocated for the object from a second memory-allocation area that corresponds to the longer memory-allocation time.