This project is done in reference to the course Project in Software Engineering at JKU.
The G1 garbage collector is the current default garbage collector in the OpenJDK Hotspot VM. Its algorithm to determine reachable objects is a straightforward implementation of the Tri-Color abstraction. The drawback of this algorithm is that mark stack, a helper data structure, memory requirements is only bounded by the number of live objects which can be a very large number (in the MBs). There is an algorithm that bounds only needs a very small mark stack and a small helper table to complete marking.
Implement a marking algorithm that uses (small) constant memory and compare with the existing.
The task for this work comprises:
- Implement the mentioned algorithm in the G1 garbage collector.
- The description only describes single-threaded operation, extend it to use multiple threads.
- Compare its performance and memory consumption to the existing algorithm on benchmarks.
Optionally:
- Implement/reuse it for Concurrent Marking.
For build instructions please see the online documentation, or either of these files:
- doc/building.html (html version)
- doc/building.md (markdown version)
See https://openjdk.org/ for more information about the OpenJDK Community and the JDK and see https://bugs.openjdk.org for JDK issue tracking.
More information about jdk22 can be found here.