This is the artifact repository for MoleculeGC: a Low-pause and High-CPU-efficiency Garbage Collector for Tiered Memory (EuroSys 2027). MoleculeGC extends G1 in OpenJDK 21 to trace and reclaim coarse-grained object groups while reducing the collector's working set on tiered memory.
The paper evaluates nine workloads from seven application frameworks: Spark Naive Bayes and Isotonic Regression, GraphChi WCC and K-Core, CoreNLP Clinical Text Knowledge Extraction, Cassandra Update Intensive, Neo4j FastRP, Spring PetClinic, and an Akka Online Editing service.
moleculegc/contains the pinned OpenJDK base, the exact MoleculeGC patch, source/build verification, a functional smoke test, and the workload-profile launcher.memliner/contains the compact MemLiner baseline package: its JDK/kernel patches, remote-swap code, workload adapters, and smoke/full entry points.
MoleculeGC and MemLiner are different collectors. Their JVM patches and options are not interchangeable; MemLiner is included as a paper baseline.
The following commands verify the package, reconstruct the patched OpenJDK, build it, and run a bounded allocation test:
cd moleculegc
bash scripts/verify-package.sh
bash scripts/fetch-source.sh
BOOT_JDK=/path/to/jdk-20-or-21 bash scripts/build.sh
bash scripts/smoke-profiles.sh
bash scripts/smoke.shIf a built image is already available, skip fetching/building and select it explicitly:
cd moleculegc
MOLECULEGC_JAVA=/path/to/moleculegc-jdk/bin/java bash scripts/smoke.shSuccessful output ends with MOLECULEGC_SMOKE_PASS and the GC log contains
use data structure GCTest. See the MoleculeGC instructions
for the nine workload aliases, direct JVM launch examples, a matched G1 control,
and the 100%, 25%, and 13% local-memory configurations. Clean-build and smoke
evidence is recorded in moleculegc/VALIDATION.md.
Large upstream source trees, third-party distributions, datasets, generated
binaries, and experiment output are intentionally excluded from Git. Source
archives and the MoleculeGC patch are SHA-256 pinned. Dataset and application
preparation notes are under memliner/workloads/;
the launchers in that baseline package use MemLiner flags, so use the
MoleculeGC launcher documented in moleculegc/ for MoleculeGC runs.
Paper-scale tiered-memory experiments require a compatible Linux 5.11 remote-swap/Hermit environment, RDMA hardware and drivers, cgroup memory control, and the external datasets. The standalone MoleculeGC smoke test checks the collector build and profile dispatch; it is not a paper-performance run.
Third-party portions and their known or unresolved licensing status are
documented in THIRD_PARTY_NOTICES.md. That notice
does not declare a repository-wide license for project-authored material. The
authors still need to publish that license and resolve the explicitly listed
source-header and RemoteSwap licensing gaps.