[9] RFR(XS): 8059596: VM startup fails with 'Invalid code heap sizes' if -XX:ReservedCodeCacheSize is set

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Nov 14 01:13:51 UTC 2014


Hi Tobias,

At the line 1149 we set ReservedCodeCacheSize to ERGO so it is not 
DEFAULT anymore:

1149     FLAG_SET_ERGO(uintx, ReservedCodeCacheSize, 
ReservedCodeCacheSize * 5);

As result segments sizes are not set there. They will be set to in 
CodeCache::initialize_heaps() as (ReservedCodeCacheSize - 
NonNMethodCodeHeapSize) / 2:

CodeHeap 'non-nmethods': size=5700Kb used=2278Kb max_used=2279Kb free=3421Kb
CodeHeap 'profiled nmethods': size=120032Kb used=120Kb max_used=120Kb 
free=119912Kb
CodeHeap 'non-profiled nmethods': size=120032Kb used=22Kb max_used=22Kb 
free=120

But it is not *5 sizes:

define_pd_global(intx, NonProfiledCodeHeapSize,      21*M);
define_pd_global(intx, ProfiledCodeHeapSize,         22*M);

And it skips the assert in arguments.cpp

Vladimir

On 10/2/14 2:17 AM, Tobias Hartmann wrote:
> Hi,
>
> please review this small patch.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8059596
> Webrev: http://cr.openjdk.java.net/~thartmann/8059596/webrev.00/
>
> Problem:
> The VM startup fails with 'Invalid code heap sizes' if
> -XX:ReservedCodeCacheSize >= 240M is specified. The problem is that in
> Arguments::set_tiered_flags() the code cache size is increased by 5 if
> TieredCompilation is enabled. This should only be done for default values.
>
> Solution:
> Add missing FLAG_IS_DEFAULT(ReservedCodeCacheSize) check.
>
> Thanks,
> Tobias


More information about the hotspot-dev mailing list