首页 > 解决方案 > 为什么 -XX:ReservedCodeCacheSize 没有被应用?

问题描述

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

java --version -XX:ReservedCodeCacheSize=512m

此时它只是设置为48M默认x86

define_pd_global(uintx, ReservedCodeCacheSize,       48*M);

然后在那一点上增加了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));
  }

导致保留代码空间48*5 M不是我配置的值:

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

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

出了什么问题,为什么该选项被默默忽略?

标签: javajvmhotspot

解决方案


--version是一个终端选项。JVM 标志应该在终端选项之前。

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


推荐阅读