Garbage Collection via Array Chunk References

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current garbage collection methods in virtual machine environments face inefficiencies when handling object arrays, particularly in dividing and processing these arrays to identify live and unused objects, leading to suboptimal performance and resource management.

Innovation Solution

The approach involves generating array chunk references that include chunk start bits and chunk length bits, allowing for efficient division of object arrays into smaller chunks and concurrent processing by multiple garbage collector threads, enabling effective load balancing and garbage collection.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If object arrays are divided into smaller chunks for processing, then garbage collection efficiency is improved through parallel processing, but the complexity of managing array chunk references increases

Engineering Contradiction:
Improvegarbage collection efficiencyVSAvoidarray chunk reference management
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent divides object arrays into smaller array chunks and creates corresponding array chunk references that encode the start address and length of each chunk. This segmentation enables multiple garbage collector threads to process different chunks in parallel, improving garbage collection efficiency while the reference structure manages the complexity of divided processing.

Inventive Principle:
Principle #1Segmentation

2Productivity

If multiple garbage collector threads process array chunks concurrently, then load balancing is improved, but the overhead of coordinating and managing multiple threads increases

Engineering Contradiction:
Improveload balancingVSAvoidthread coordination overhead
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces array chunk references as an intermediary data structure that encapsulates array chunk information (start address and length). These references serve as a mediator between the object array and multiple garbage collector threads, allowing threads to independently process chunks without direct coordination overhead, thus improving load balancing while managing thread complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Measurement precision

If array chunk references store detailed information about each chunk, then processing precision is improved, but the memory overhead of storing reference information increases

Engineering Contradiction:
Improvearray chunk processing precisionVSAvoidmemory overhead
Core Design Contradiction:
Measurement precisionVSQuantity of substance

Solution Approach 1:

The patent changes the parameter representation in array chunk references by storing only essential information (start address and length) rather than complete array chunk metadata. This parameter optimization maintains sufficient processing precision for garbage collection while reducing the memory overhead associated with storing detailed reference information for each array chunk.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10733095B2Performing garbage collection on an object array using array chunk references
Publication Date: 2020.08.04 ORACLE INT CORP
  • US10733095B2 patent drawing
  • US10733095B2 patent drawing
  • US10733095B2 patent drawing

AI summary

Techniques for performing garbage collection on an object array using array chunk references is described. A garbage collector (GC) thread identifies an object array to be processed. The GC thread divides the object array into array chunks. The GC thread generates array chunk references corresponding respectively to the array chunks. Each array chunk reference comprises: (a) chunk start bits representing a memory address of a start of a corresponding array chunk, and (b) chunk length bits representing a chunk length of the corresponding array chunk. The GC thread pushes the array chunk references onto the processing stack. A single processing stack concurrently stores multiple array chunk references, associated with a same object array. One or more of the array chunk references, that are associated with the same object array and stored on the processing stack, may be distributed to other GC threads for processing.