gpt4 book ai didi

java - JVM 分配了太多空间

转载 作者:行者123 更新时间:2023-11-28 21:53:32 27 4
gpt4 key购买 nike

我一直在运行两个使用 nginx 集群的 tomcat 实例。在我的 tomcat 上,我将 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

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

最佳答案

您可以引用 this SO post看看这里注意到的问题是否适用于您,以及为什么您没有看到您的内存按预期释放。

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

Further reference可能会阐明 GC 的行为。

关于java - JVM 分配了太多空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24691596/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com