我试图了解-XX:ReservedCodeCacheSize=512m的工作原理,但在运行Java时未按如下方法应用它:

java --version -XX:ReservedCodeCacheSize=512m

只需在此point上将48M设置为默认的x86

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,所以不是这种情况。

怎么了?为什么该选项被默默忽略?

最佳答案

--versionterminal option。 JVM标志应在终端选项之前。

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

10-06 13:05