为什么 -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
我试图了解 -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