当前位置: 首页 > 知识库问答 >
问题:

G1GC会导致内存逐渐增长,而全GC会降低内存

池恩
2023-03-14

我正在centos 6上运行java应用程序,使用G1GC运行openjdk版本“1.8.0_232”。我看到堆的总使用量逐渐增加,导致应用程序崩溃。当我对活动对象进行堆转储时,转储大小仅为1.6GB,但我使用的总堆容量为32GB。

用于获取dump:jmap-dump:live、format=b、file=/tmp/dump的命令。hprof

从某个地方读到,jmap dump命令会触发一个完整的GC并释放不可访问的堆,这就是转储大小减小的原因。我可以看到,在触发dump命令后,我的堆总使用量下降了,然后又开始逐渐增长。

我的JVM参数:-XX:-AllowUserSignalHandlers-Xmx49000m-DFCGI_PORT=6654-XX:UseG1GC-XX:UseStringDuplication-XX:InitiatingHeapOccupencyPercent=55-XX:HeapDumpOnAutofmemoryError-XX:HeapDumpPath=/var/log/xyz-XX:PerfDisableSharedEM-Djava。伊奥。tmpdir=/var/XXX/temp

有没有更好的方法可以有效地使用G1完成完整的GC?

共有1个答案

裴姚石
2023-03-14

这是因为呈现给您的是提交的内存,它与使用的内存不同。

在较新版本的Java中,GC算法有了改进,可以更频繁地为操作系统释放指定的内存。

使用Java任务控制可以更详细地查看内存(提交的内存与使用的内存)。

我的建议是使用较新版本的Java,如果不可能,请将XmX的值更改为较低的值(3Gb)。您会注意到JVM总是接近定义的限制。

  1. https://openjdk.java.net/jeps/346
  2. https://openjdk.java.net/jeps/351
  3. https://blog.idrsolutions.com/2019/09/improved-garbage-collection-in-java-13/
  4. https://www.slideshare.net/jelastic/choosing-right-garbage-collector-to-increase-efficiency-of-java-memory-usage
 类似资料:
  • 我在spark streaming中面临一个非常奇怪的问题。我使用的是、节点数3、执行器数3{1个接收器和2个处理器}、每个执行器的内存2GB、每个执行器的内核1。批次间隔为10秒。我的批量大小约为1000条记录(约150KB)。 流转时长从最初的2秒逐渐增加到几分钟,但在最初的40-50小时内运行良好。之后,调度延迟和流转时长开始上升。 我试过查看GC,发现驱动程序的旧一代堆内存容量不断增加。这

  • 我有一些和等,但是我没有设置。你觉得会是那样吗? 你有什么想法或建议吗? PS:该应用程序在Ubuntu机器上运行 多谢.

  • 我正在玩rxjava,发现如果在活动被销毁之前没有完成订阅,则存在内存泄漏的风险,因为“可观察对象保留对上下文的引用”。如果订阅没有取消订阅,则此类情况的演示之一如下所示。已销毁(来源:https://github.com/dlew/android-subscription-leaks/blob/master/app/src/main/java/net/danlew/rxsubscriptions

  • 问题内容: 我正在运行django应用程序,其中包括matplotlib,并允许用户指定图形的轴。这可能会导致 “溢出错误:超出了Agg复杂度” 发生这种情况时,最多会占用100MB的RAM。通常,我会使用,和释放该内存,但是与该错误关联的内存似乎与该绘图对象无关。 有谁知道我该如何释放记忆? 谢谢。 这是一些给我Agg复杂度错误的代码。 问题答案: 我假设您可以至少运行一次您发布的代码。该问题仅

  • 问题内容: 我正在编写一个测试程序,如下所示: 当用户单击按钮A时,它将打开50个JFrame。 当用户单击按钮B时,它将放置所有通过单击按钮A显示的JFrame。 我发现单击按钮B后内存不会减少。我使用任务管理器(在Windows中为+ + ,并检查“ java”的内存使用情况)确定了这一点。 问题答案: 是的,没有办法,无法解决(不仅在Java PL中), 1)实际上,不要在运行时/运行时创建

  • 我正在研究一种需要对大矩阵进行数学运算的算法。基本上,该算法包括以下步骤: 输入:大小为n的两个向量u和v > 对于两个矩阵中的每个条目,应用一个函数f。返回两个矩阵M_u,M_v 求M_的本征值和本征向量。对于i=0,返回e_i,ev_i,。。。,n-1 计算每个特征向量的外积。返回一个矩阵O_i=e_i*转置(e_i),i=0,。。。,n-1 用e_i=e_i delta_i调整每个特征值,其