Concurrent Garbage Collection via Dual-Space Object Copying

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Concurrent garbage collectors face synchronization challenges and performance penalties due to the need for garbage-collection barriers, which can lead to 'stop the world' situations and incorrect reclamation of live data.

Innovation Solution

A system that performs concurrent garbage collection by using a garbage-collector thread to copy live objects from a from-space to a to-space, replacing pointers, and managing cache line states to prevent mutator threads from accessing outdated data, while ensuring that all mutator threads are marked as clean before clearing the from-space.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If concurrent garbage collection is implemented, then memory reclamation continues during application execution, but synchronization problems and performance penalties occur due to GC barriers

Engineering Contradiction:
Improvememory reclamation efficiencyVSAvoidsynchronization complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent divides the heap into two separate spaces: from-space (being collected) and to-space (for copied live objects). This segmentation allows the garbage collector to work on one space while mutator threads continue executing, eliminating the need for traditional GC barriers that would stop the application. The division into two spaces resolves the synchronization complexity by providing clear separation between collection and mutation operations.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a card table as an intermediary data structure that tracks which cache lines in from-space contain live objects. Instead of requiring mutator threads to check GC barriers on every access, the card table acts as a mediator that the garbage collector queries to determine which regions need collection. This eliminates the performance penalty of GC barriers while maintaining correctness.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If GC barriers are used to prevent incorrect reclamation, then correctness is maintained, but performance and code size increase substantially

Engineering Contradiction:
Improvecorrectness of garbage collectionVSAvoidapplication performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent performs preliminary marking of cache lines that contain live objects before the actual collection phase. By using the card table to pre-identify which cache lines need protection, the system ensures correctness without requiring runtime GC barriers during mutator execution. The marking action is performed in advance, eliminating the need for costly barrier checks during application performance-critical paths.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent copies live objects from from-space to to-space rather than requiring in-place modification or barrier protection. This copying mechanism ensures correctness by creating isolated copies that can be safely collected from the original space. The copy operation maintains reliability while avoiding the performance overhead of GC barriers, as mutator threads simply continue accessing their original objects until the copy is complete.

Inventive Principle:
Principle #26Copying

3Device complexity

If the entire application stops for garbage collection, then synchronization is simplified, but responsiveness and user experience deteriorate

Engineering Contradiction:
Improvegarbage collection simplicityVSAvoidapplication responsiveness
Core Design Contradiction:
Device complexityVSEase of operation

Solution Approach 1:

The patent enables continuous execution of mutator threads during garbage collection by maintaining two active spaces. While the garbage collector processes from-space, mutator threads continue executing and allocating in to-space without interruption. This continuity eliminates stop-the-world pauses entirely, maintaining application responsiveness while the collection process proceeds in the background on separate heap space.

Inventive Principle:
Principle #20Continuity of useful action

Solution Approach 2:

The patent adds a temporal dimension to garbage collection by overlapping the collection process with application execution in time. Instead of sequential operation (application stops → GC runs → application resumes), the system enables concurrent operation where GC and application execution proceed simultaneously in different heap spaces. This dimensional change from sequential to parallel timing resolves the responsiveness issue while keeping GC mechanics relatively simple.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Data Source

PatentUS8065349B2Method and apparatus for performing concurrent garbage collection
Publication Date: 2011.11.22 ORACLE AMERICAN INC
  • US8065349B2 patent drawing
  • US8065349B2 patent drawing
  • US8065349B2 patent drawing

AI summary

The present invention provides a system that facilitates performing concurrent garbage collection. During operation, the system executes a first mutator thread. While executing the first mutator thread, the system performs a garbage-collection operation using a garbage-collector thread. Performing the garbage-collection operation involves: discovering a live object in a from-space, which is being collected; creating a copy of the live object to a to-space, where live objects are copied to during garbage collection; and replacing the live object in the from-space with a forwarding pointer which points to a location of the copy of the live object in the to-space.