设置 MetaspaceSize 的准则 - java 8
64 位服务器的 MetaspaceSize 的默认值是什么?我在官方文档中找不到它。
我观察到,在服务器JVM进程中,有时GC频率会变得很高并且不断增长。如果我重新启动该服务几次,它将恢复稳定。我认为这是由于JRE升级。
JVM 堆最大大小设置为 6GB,但当出现此问题时,我们看到仅使用 3GB 堆。元空间增长很少,几乎总是满的。我尝试将元空间增加到1GB,它提高了吞吐量。
我认为正在发生的事情是,默认情况下,Metaspace被设置为一个非常低的值,因此GC开始发挥作用。每次GC发生时,高水位线都会持续增加(再次以非常低的量增加)。
我想设置MetaspaceSize(不确定当前值是多少)。
Oracle文档表示,没有指南可以知道将MetaspaceSize设置为什么。但是有没有办法找出将其设置为的正确值?
我从Oracle文档中得到的一个提示是这样的:
If the committed space available for class metadata as a percentage of the total committed space for class metadata is greater than MaxMetaspaceFreeRatio, then the high-water mark will be lowered. If it is less than MinMetaspaceFreeRatio, then the high-water mark will be raised.
但仍然无法弄清楚如何稳定GC。我有三个问题:
- 64 位服务器上的默认 MetaspaceSize 是什么?
- 默认比率是多少:MaxMetaspaceFreeRatio,MinMetaspaceFreeRatio设置为?答:它显示最小值为 40,最大值为 70
- 如何决定元空间大小值?