gpt4 book ai didi

java - 一个月内发生两次堆空间不足错误。 java

转载 作者:行者123 更新时间:2023-11-28 22:49:10 27 4
gpt4 key购买 nike

我有一个我正在使用的企业应用程序,目前它处于暂存环境中。服务器有 24 GB 的 RAM。但平均 15-20 天后服务器出现故障,我们会在服务器日志中看到内存空间不足错误。我正在使用 J2EE、spring、hibernate、memcache、ehcache、mysql 和 tomcat8。我用nginx做集群,有3个tomcat服务器节点。

请建议/帮助我应该怎么做,因为我无法跟踪/获取此错误的来源以及发生此内存泄漏的位置。

谢谢

最佳答案

您的程序可能在堆中分配许多对象,并且不允许垃圾收集器释放它们。

要诊断您可以对您的服务进行堆转储,这是通过以下命令完成的:

jmap -dump:format=b,file=dump.bin <pid>

哪里<pid>是您的 Java 服务的进程 ID(您可以使用命令 ps faux | grep java 找到它)。

然后你可以用VisualVM打开文件dump.bin并检查它以查看哪些对象正在使用您的大部分堆。

因为堆转储会很大并且会包含准备好进行垃圾收集的对象,您可能想告诉 jmap只将那些不能被垃圾回收的对象放入堆转储中,这是通过添加标志 live 完成的。到 jmap命令:

jmap -dump:live,format=b,file=dump.bin <pid>

以下是使用 VisualVM 检查堆转储的说明:https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/heapdump.html

关于java - 一个月内发生两次堆空间不足错误。 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46188057/

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