Interactive Java harness lab / Synthetic model

G1 evidence triage: classify a synthetic pause fixture

Compare allocation churn, retained growth and non-GC latency fixtures. Change a pause target and see which observations remain unchanged.

By Sandeep Belgavi · Published 2026-10-30

Evidence label: deterministic synthetic teaching model. This browser page executes a small JavaScript model of the stated policy. It does not run Java, access a JVM, create actual worker threads or contact a tool. Use it to understand the boundary and compare assumptions before running the separate Java example.

Predict the boundary before running the model

Before lowering the comparison target, predict whether the five existing pauses will change. Then select retained growth and explain why a larger heap would not by itself prove the retention cause was fixed.

Write a prediction for the terminal outcome, then use Run model. The summary reports the calculated end-state for the current inputs. The trace begins at its first event so you can inspect how that outcome is reached. Next event advances one row; Show complete trace exposes every row. Restart trace changes only the viewing position, not the selected inputs.

Run and inspect the synthetic experiment

Expected outcomes and useful counterexamples

The comparison target changes the count of over-target observations, not the pause values. Retained-growth data ends above its starting post-GC occupancy. The non-GC fixture has short pauses despite its declared application-latency symptom.

Change one input, rerun and compare the exact values in the table. A boundary that still holds under the changed inputs is more informative than an attractive animation. Trace rows and text labels carry the result; the visual colors are supplementary. The model recalculates only after Run model, so an edited input does not silently replace the trace you are inspecting.

What this lab cannot establish

All five-point fixtures are invented and intentionally small. The nearest-rank percentile is only descriptive for these five values. This is not a GC implementation, log parser, pause predictor, production diagnosis or evidence that a JVM flag improves performance.

The controls have intentionally small finite ranges. They are not operational recommendations. No output here demonstrates production capacity, a recommended heap size, successful cancellation of a remote effect or a GC performance improvement. Use the downloadable Java fixture and then a representative integration test to investigate those separate questions. Keep the runtime version and the measurement method with any real results.

Continue with the Java implementation

Tune Java G1 From Allocation Evidence Before Changing JVM Flags contains the original Java fixture, the failure analysis and its primary references. Continue with Bound Java Harness Fan-Out Before Virtual Threads Overload Tools to examine the next ownership boundary. The examples have synthetic non-personal inputs and do not require an account, API key or external service.

All six guides and labs · Lab catalog.

Views are my own and do not represent any employer, past or present.