RFR (S): JDK-6348447 - Specifying -XX:OldSize crashes 64-bit VMs
jesper.wilhelmsson at oracle.com
Mon Jan 14 17:10:38 UTC 2013
I would like a couple of reviews of a small fix for JDK-6348447 - Specifying
-XX:OldSize crashes 64-bit VMs
When starting HotSpot with an OldSize larger than the default heap size one
will run into a couple of problems. Basically what happens is that the OldSize
is ignored because it is incompatible with the heap size. A debug build will
assert since a calculation on the way results in a negative number, but since
it is a size_t an if(x<0) won't trigger and the assert catches it later on as
I have made two changes to fix this.
The first is to change the calculation in
TwoGenerationCollectorPolicy::adjust_gen0_sizes so that it won't result in a
negative number in the if statement. This way we will catch the case where the
OldSize is larger than the heap size and adjust the OldSize instead of the
young size. There are also some cosmetic changes here. For instance the
argument min_gen0_size is actually used for the old generation size which was
a bit confusing initially. I renamed it to min_gen1_size (which it already was
called in the header file).
The second change is in Arguments::set_heap_size. My reasoning here is that if
the user sets the OldSize we should probably adjust the heap size to
accommodate that OldSize instead of complaining that the heap is too small. We
determine the heap size first and the generation sizes later on while
initializing the VM. To be able to fit the generations if the user specifies
sizes on the command line we need to look at the generation size flags a
little already when setting up the heap size.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 236 bytes
Desc: not available
More information about the hotspot-gc-dev