为什么 -XX:ReservedCodeCacheSize 没有得到应用?

Why is -XX:ReservedCodeCacheSize not getting applied?

我试图了解 -XX:ReservedCodeCacheSize=512m 是如何工作的,但它在 运行 java 时没有得到应用,如下所示:

java --version -XX:ReservedCodeCacheSize=512m

它只是在 x86 上设置为默认值 48M point:

define_pd_global(uintx, ReservedCodeCacheSize,       48*M);

然后在 point:

增加了 5 倍
// 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));
  }

导致 reservation code space 变为 48*5 M 而不是我配置的值:

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

我首先认为 ReservedCodeCacheSize 是一个开发选项,因此不允许被覆盖,但它被标记为产品 here 所以情况并非如此。

出了什么问题,为什么这个选项被默默地忽略了?

--version 是一个 terminal option。 JVM 标志应位于终端选项之前。

尝试java -XX:ReservedCodeCacheSize=512m --version