【发布时间】:2016-09-14 13:09:57
【问题描述】:
JVM 设置:
-Xms8192M
-Xmx8192M
-XX:NewRatio=1
-XX:SurvivorRatio=6
-XX:MetaspaceSize=256M
-XX:MaxMetaspaceSize=512M
jstat 的输出是
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
524288.0 524288.0 0.0 231108.3 3145728.0 2926008.3 4194304.0 73553.2 58624.0 56981.2 8960.0 8619.0 5 0.684 1 0.235 0.919
gccapacity 的输出是
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
4194304.0 4194304.0 4194304.0 218624.0 208896.0 3766784.0 4194304.0 4194304.0 4194304.0 4194304.0 0.0 1099776.0 59136.0 0.0 1048576.0 8960.0 26 1
在上述两种情况下,元空间的输出大小约为 56M,即使最小元空间大小定义为 256m
【问题讨论】:
-
-XX:MetaspaceSize=256M是否不配置最小大小。它甚至没有配置任何类型的实际大小。 -
那是什么意思。我有办法强制元空间大小吗?目前元空间大小利用率达到 90% 是不是很糟糕?有什么办法可以避免吗?
-
参见Advanced Garbage Collection Options:
-XX:MetaspaceSize=size:设置分配的类元数据空间的大小,在第一次超出时将触发垃圾回收。垃圾收集的阈值会根据使用的元数据量增加或减少因此此选项仅指定触发垃圾收集的阈值,甚至可能稍后更改。没有理由担心利用率。必要时会增加大小。 -
(1) 我会编辑这个问题以使其更清楚,并询问 cmets 中提出的问题(即,为什么这不起作用); (2) 如果这确实解决了问题,我会将 Holger 的评论作为答案中的定义,并将其附加到 Jade Tang 关于关闭
UseCompressedClassPointers的评论中。
标签: java garbage-collection java-8 jvm jstat