Search code examples
javajvmjvm-hotspot

Why is -XX:ReservedCodeCacheSize not getting applied?


I tried to understand how -XX:ReservedCodeCacheSize=512m works but it did not get applied when running java as follows:

java --version -XX:ReservedCodeCacheSize=512m

It simply set to the default 48M on x86 at this point:

define_pd_global(uintx, ReservedCodeCacheSize,       48*M);

And then got 5 times increased at that point:

// Increase the code cache size - tiered compiles a lot more.
if (FLAG_IS_DEFAULT(ReservedCodeCacheSize)) {
    FLAG_SET_ERGO(uintx, ReservedCodeCacheSize,
                  MIN2(CODE_CACHE_DEFAULT_LIMIT, (size_t)ReservedCodeCacheSize * 5));
  }

causing reservation code space to 48*5 M instead of the value I configured:

size_t cache_size         = ReservedCodeCacheSize;
//...
ReservedCodeSpace rs = reserve_heap_memory(cache_size);

I first though that ReservedCodeCacheSize is a development option and therefore not allowed to be overriden, but it is marked as product here so this is not the case.

What's wrong and why was the option silently ignored?


Solution

  • --version is a terminal option. JVM flags should precede terminal options.

    Try java -XX:ReservedCodeCacheSize=512m --version