Metaspace Segmentation for Garbage Collection Efficiency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern garbage collectors face challenges in efficiently managing class metadata, particularly in multi-tasking environments where transparent sharing of class metadata across tasks increases memory management costs and complicates garbage collection, especially when tracing cross-metadata references.

Innovation Solution

The approach involves allocating class metadata to metaspaces segregated by their class loader, maintaining a linkset graph to summarize cross-metaspace references, and using this graph to determine liveness and reclaim memory locations en masse, reducing the need for tracing references between metadata items.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If class metadata are stored in the same memory heap as Java objects to unify processing during garbage collection, then garbage collection can be simplified, but memory management complexity increases due to the need to trace cross-metadata references and determine liveness of individual metadata items

Engineering Contradiction:
Improvegarbage collection processing unificationVSAvoidmemory management complexity
Core Design Contradiction:
Ease of manufactureVSDevice complexity

Solution Approach 1:

The patent segments class metadata storage from the general Java object heap by introducing a separate metaspace. This segmentation allows the garbage collector to treat metadata differently from regular objects, simplifying the overall GC process while reducing memory management complexity through dedicated metadata handling structures.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces linkset graphs as intermediary structures that summarize cross-metadata references. Instead of tracing individual references between metadata items during garbage collection, the linkset graph acts as a mediator that pre-computes and stores reference relationships, significantly reducing the tracing workload and complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Quantity of substance

If transparent sharing of class metadata across tasks is implemented to reduce memory consumption, then memory efficiency improves, but garbage collection becomes more complex and costly due to increased cross-metadata references that must be traced

Engineering Contradiction:
Improvememory consumptionVSAvoidgarbage collection complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent merges class metadata from multiple tasks into a shared metaspace when they have the same lifetime (coterminous with the same class loader). This merging reduces total memory consumption by eliminating duplicates while the linkset graph mechanism manages the cross-references efficiently, preventing GC complexity from escalating.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent performs preliminary actions by pre-computing and storing cross-metadata reference relationships in the linkset graph before garbage collection occurs. This preliminary organization of reference data allows the GC to operate more efficiently on shared metadata without having to perform expensive tracing operations during collection.

Inventive Principle:
Principle #10Preliminary action

3Measurement precision

If individual class metadata items are tracked separately to enable precise garbage collection, then memory reclamation precision improves, but the cost of tracing cross-metadata references increases significantly

Engineering Contradiction:
Improveliveness detection precisionVSAvoidtracing time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent creates a simplified copy of the reference structure in the linkset graph that summarizes cross-metadata relationships. Instead of tracing the actual complex web of references between individual metadata items during GC, the system uses this pre-computed copy to quickly determine liveness, maintaining precision while dramatically reducing tracing time.

Inventive Principle:
Principle #26Copying

4Stability of the object's composition

If class metadata are allocated in the permanent generation area with pre-tenure, then memory layout consistency improves, but flexibility in memory reclamation and independent class unloading decreases

Engineering Contradiction:
Improvememory layout consistencyVSAvoidmemory reclamation flexibility
Core Design Contradiction:
Stability of the object's compositionVSAdaptability or versatility

Solution Approach 1:

The patent introduces dynamic memory management for class metadata through the metaspace allocation system. Instead of fixed pre-tenure allocation in the permanent generation, metadata can be dynamically allocated in the metaspace with flexible reclamation policies. The system can adjust allocation and reclamation strategies based on runtime conditions, enabling both consistency and flexibility.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS9116798B2Optimized memory management for class metadata
Publication Date: 2015.08.25 ORACLE INT CORP
  • US9116798B2 patent drawing
  • US9116798B2 patent drawing
  • US9116798B2 patent drawing

AI summary

A method for managing class metadata in a garbage collected system, including (i) allocating a metaspace to a class loader of a mutator using a memory heap, where the metaspace is configured to store the class metadata generated by the class loader, (ii) storing, in the metaspace, class metadata items associated with classes defined by the class loader, where the class metadata items and the class loader are coterminous, and where all of the class metadata items are identified by a garbage collector as live if any of the class metadata items is reachable by the mutator, (iii) updating a linkset graph during resolution of symbolic links to sumarize cross-metaspace references, and (iv) reclaiming, by the garbage collector based on a pre-determined algorithm using the metaspace, memory locations unreachable by the mutator, where all memory locations allocated to the class metadata items are reclaimed together as a group.