The way we currently choose the heap region size in G1 can sometimes give worse OOTB performance than expected. In recent benchmarking the difference between setting a fixed heap size of 4g and letting it get a default max heap of 4g was bigger than expected.
Running SPECjbb2015, the max-jOPS increased with ~40% and critical-jOPS increased 130% when setting a fixed heap size. The main reason behind the improvement is that when running with a fixed heap size the region size will be 2m instead of 1m. This difference comes from the fact that both the initial and max heap size is considered when calculating the heap region size ergonomically.
We should look into changing this to give a better out of the box behavior.