64位服务器的MetaspaceSize默认值是多少?我在官方文档中找不到相关信息。
我发现在一个服务器JVM进程中,有时GC频率变高并持续增长。如果我重启服务几次,它就能恢复稳定。我认为这是由于JRE升级导致的。
JVM堆最大大小设置为6GB,但当出现这个问题时,我们只看到3GB堆被使用。Metaspace增长很少,并且几乎总是满的。我试图将Metaspace增加到1GB,这样可以提高吞吐量。
我认为正在发生的事情是默认情况下将Metaspace设置为非常低的值,因此GC启动。每次发生GC时,高水位标记都会持续增加(再次是非常小的数量)。
我想设置MetaspaceSize(不确定当前值是多少)。
Oracle文档说没有指南可以知道应该将MetaspaceSize设置为什么。但是有没有办法找出正确的值?
我从Oracle文档中得到了一个提示:
如果类元数据的已提交空间占类元数据总已提交空间的百分比大于MaxMetaspaceFreeRatio,则高水位标记将降低。如果小于MinMetaspaceFreeRatio,则高水位标记将升高。
但仍然无法弄清楚如何稳定GC...我的问题有三个:
- 64位服务器的默认MetaspaceSize是多少?
- 默认比率是什么:MaxMetaspaceFreeRatio,MinMetaspaceFreeRatio设置为什么?答案:显示Min为40,Max为70
- 如何决定Metaspacesize值?
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version -XX:+UseG1GC | grep Metaspace
- SaviorUnlockDiagnosticVMOptions
来查找Metaspace
的那些默认值。 - Eugene