Entering content frame

Background documentation Function of the Shared Garbage Collector Locate the document in its SAP Library structure

The shared garbage collector (SGC) removes objects no longer needed from the shared pool (Shared Closures). Unlike the normal garbage collector (on local VMs), all VMs must contribute to the shared garbage collection. Only when all the VMs have contributed is global memory that is no longer needed freed up.

Process Flow of Shared Garbage Collection

A shared garbage collection consists of a cycle which all Java VMs must contribute to. The SGC and the VMs assume various states during this cycle. You can see these states in the header area of the VM overview (see Structure linkVM Overview: General Information).

Before the cycle starts the state of the SGC is Inactive and the state of the VMs in the SGC is Neutral (see Structure linkVM Overview: Table of VMs).

An SGC cycle starts as soon as a VM performs a full garbage collection (full GC) in its local heap memory. The state of the SGC then changes to Active; VMs should contribute. The SGC state changes to Has contributed for those VMs that have already contributed and to to contribute for those VMs that have not yet contributed.

Once 80% of all VMs have contributed to the SGC, the remaining 20% are forced to contribute. The state of the SGC then changes to Active; VMs must contribute and the SGC state of the VMs to Must contribute.

If 90% of the global memory (shared pool) is used up, an SGC is also forced regardless of the contribution state of the VMs.

If all VMs have contributed to the SGC, the cycle is ended and the state of the SGC is Inactive again and the state of the VMs is Neutral.

Implementation of the Shared Garbage Collection

Each object in the shared pool has a black and white flag. The first VM that starts the SGC cycle with a (local) full GC, sets the flag to white for all objects.  Then the VM sets a black flag for the objects referenced in its local heap. Each further VM contributing to the SGC likewise sets a black flag for its objects.  New objects created during a cycle are also assigned a black flag. After the last VM has contributed to the SGC, the remaining objects are deleted with a white flag (since they are no longer being referenced by a VM), and the space they occupy in the shared memory is freed up.

Further Information

The possible states of the SGC are described under Structure linkVM Overview: General Information.

The possible states of the VMs are described under Structure linkVM Overview: Table of VMs.

For information about VMC memory management see Memory Management in the VM Container.

 

 

Leaving content frame