[Fabric 1.20.1] HeapHammer 1.2.0
Curse Maven Snippet
What's new
HeapHammer v1.2.0
Deterministic Minecraft server stress testing and retained-memory regression detection.
Highlights & Changes
HeapHammer 1.2.0 extends the 1.1.0 player-lifecycle surface with concurrent cohort workloads and gaze orientation control, widens world-store evidence to every persisted dimension store, and ships a second wave of synthetic leak fixtures modelled on real AllTheLeaks/NeoForge/Fabric/GTNH/Paper incidents.
New operator surfaces
/hh plan|run players --cohort=truekeeps every login of an iteration online simultaneously: all JOINs run first, middle actions execute while the full cohort is present, then all QUITs. Members stand on a deterministic ring that auto-scales for large cohorts.--actions=...,lookat,...rotates a test player so its server-side view vector points at the planned coordinate; in cohort mode each member is aimed at its ring-neighbor's eye position, which is what makes per-viewer observation fixtures fire at all.--hold=Nnow also acts as the cohort dwell: once only QUITs remain for an iteration, the aimed cohort stays online for N ticks so per-tick observers see real concurrent state.- World-store snapshots (
--diagnostics=world-store,hh compare) now cover SavedDatadata/*.datpayloads and chunk-regionregion/*.mcabytes alongside entity regions;totalPersistedBytesfeeds the world-growth evidence diff.
Synthetic diagnostic fixtures (modern Fabric only)
Five additional opt-in fixtures build on 1.21.1, 1.21.4, 1.20.6, 1.20.4, and 1.20.1, each defaulting to OFF with clean, leak, and reset modes:
testmod-leak-clonecachehooks the player clone boundary (respawn, end-return).leakretains each pre-cloneServerPlayerwith a 256 KB record;cleanre-keys by the surviving UUID.testmod-leak-fakeplayerfactoryconstructs a freshServerPlayeroperator per HeapHammer-tagged entity load — the machinery/archetype whose advancement listeners pin the operator forever inleakmode.testmod-leak-gazetrackraycasts each test player's view every tick and serializes any looked-at player's NBT.leakkeeps every observation;cleankeeps only the latest per observer:target pair.testmod-leak-cachelist+testmod-antag-optimizerform the intrusive-optimizer pair: the victim keeps a lazily rebuilt chunk-metadata cache and a bounded rebuild audit; the antagonist sweeps the victim's cache every N ticks (antagoptimizer on|once|interval <ticks>), turning each rebuild into unbounded audit growth. Each mod alone is a stable plateau.
Recommended verification commands:
clonecacheleak mode leak
fakeplayerfactory mode leak
gazetrackleak mode leak
cachelistleak mode leak
antagoptimizer interval 20
antagoptimizer on
hh run players --iterations=2 --logins-per-cycle=3 --cohort=true --actions=join,lookat,respawn,quit --explicit-gc=true --diagnostics=retention,histogram,event-metrics
hh run players --iterations=3 --logins-per-cycle=4 --cohort=true --actions=join,lookat,lookat,quit --explicit-gc=true --diagnostics=retention,histogram,event-metrics
hh run entities --profile=persistent --iterations=5 --batch=15 --hold=5 --settle=10 --explicit-gc=true --diagnostics=retention,histogram,event-metrics,world-store
Evidence and safety
Full Release Notes & Checksums: https://github.com/DurdeuVlad/heaphammer/releases/tag/v1.2.0
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

