【问题标题】:Understanding metaspace size了解元空间大小
【发布时间】: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


【解决方案1】:

您需要关闭UseCompressedClassPointers,这将在元空间中创建一个空间。

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 2021-08-10
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2013-07-19
    相关资源
    最近更新 更多