$ 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 (java.base@25.0.4.1)
Total       2030279       57368512

--- JDK 25, -XX:+UseCompactObjectHeaders ---
   1:       2000000       32000000  HeaderSizeDemo$Pair
 300:             1             16  java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$MethodHandlePair (java.base@25.0.4.1)
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.
