首页 文章

JVM分配的空间太大

提问于
浏览
3

我一直在运行两个用nginx聚集的tomcat实例 . 在我的tomcats上,我将Infinispan作为分布式缓存运行 . 当我将大约4mio记录插入我的缓存时,会发生一些奇怪的事情 . 在图1中,你可以看到我的意思 . JVM分配的内存比以往任何时候都多,并且在使用后不会释放 .

Heap Tomcat 1

Heap Tomcat 2

JVM参数:

  • Xmx8g

  • XX:NewRatio = 4

  • XX:SurvivorRatio = 8

  • XX:UseCompressedOops

  • XX:UseConcMarkSweepGC

  • XX:UseParNewGC

  • XX:DisableExplicitGC

  • XX:UseCMSInitiatingOccupancyOnly

  • XX:CMSClassUnloadingEnabled

  • XX:CMSScavengeBeforeRemark

  • XX:CMSInitiatingOccupancyFraction = 68

  • XX:MaxHeapFreeRatio = 20

  • XX:MinHeapFreeRatio = 10

你可以向我解释一下为什么JVM没有释放分配的内存,即使我将MAXHeapFreeRatio设置为20%?

1 回答

  • 0

    您可以参考this SO post来查看此处发现的问题是否适用于您,以及为什么您没有按预期释放内存 .

    tl; dr版本似乎人们发现串行GC配置是唯一真正关注最小/最大堆比率选项的配置,但对于您的特定情况可能会有所不同 .

    Further reference可能会对GC的行为有所了解 .

相关问题