Files
zgc-jdk25-benchmarks/flags/docs/output/04-compact-object-headers.txt
T
asmhatreandClaude Sonnet 5 2f88734f5d Add flags: production JVM flag cheat sheet for Spring Boot on JDK 25/27
MaxRAMPercentage vs a hardcoded -Xmx, -XX:-UseContainerSupport, the
ActiveProcessorCount lie, and which diagnostic flags are worth leaving
on in prod, verified in real Docker containers on JDK 25 and JDK 27.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-10-01 04:34:04 +00:00

28 lines
1.6 KiB
Plaintext

$ docker run -d --memory=1g --name hdr -v $PWD/docker/headersize.jar:/headersize.jar \
--entrypoint java flags-demo:<tag> [extra flags] -cp /headersize.jar HeaderSizeDemo 2000000
$ docker exec hdr jcmd 1 GC.class_histogram | grep -E "Pair|Total"
--- JDK 25, default (UseCompactObjectHeaders=false), flags-demo:jdk25-jdk ---
1: 2000000 48000000 HeaderSizeDemo$Pair
273: 1 24 java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$MethodHandlePair ([email protected])
Total 2030279 57368512
--- JDK 25, -XX:+UseCompactObjectHeaders ---
1: 2000000 32000000 HeaderSizeDemo$Pair
300: 1 16 java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$MethodHandlePair ([email protected])
Total 2030283 41272056
--- JDK 27, default (UseCompactObjectHeaders=true), flags-demo:jdk27 ---
1: 2000000 32000000 HeaderSizeDemo$Pair
317: 1 16 java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$MethodHandlePair (java.base@27)
Total 2030937 41320144
--- JDK 27, -XX:-UseCompactObjectHeaders ---
1: 2000000 48000000 HeaderSizeDemo$Pair
282: 1 24 java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$MethodHandlePair (java.base@27)
Total 2031092 57425040
2,000,000 instances of a 2-int object: 48,000,000 bytes (24 bytes each) with the old header,
32,000,000 bytes (16 bytes each) compact. 33% smaller per instance, reproduced symmetrically
in both directions on both JDKs.