Java 在没有生成堆转储的情况下使用正确的策略

Java 在没有生成堆转储的情况下使用正确的策略,java,centos,openjdk,Java,Centos,Openjdk,我在OpenJDK和CentOS上找到了一台运行Java应用程序的服务器 然而,应用程序似乎有内存泄漏,每隔几周就会崩溃一次。 问题在于,尽管指定了heapdumponotofmemoryerror,但没有生成堆转储。 如果我创建了一个人工内存泄漏,立即导致应用程序崩溃,则会生成一个适当的堆转储 现在,我不是要彻底解决这个问题,而是要一个好的策略 例如,当应用程序在一周后运行时,是否有办法按需提取堆转储?有没有办法找出OpenJDK中的错误?关于如何实现这一点,您有其他建议吗?OpenJDK应该

我在
OpenJDK
CentOS
上找到了一台运行
Java
应用程序的服务器

然而,应用程序似乎有内存泄漏,每隔几周就会崩溃一次。 问题在于,尽管指定了
heapdumponotofmemoryerror
,但没有生成堆转储。 如果我创建了一个人工内存泄漏,立即导致应用程序崩溃,则会生成一个适当的堆转储

现在,我不是要彻底解决这个问题,而是要一个好的策略


例如,当应用程序在一周后运行时,是否有办法按需提取堆转储?有没有办法找出OpenJDK中的错误?关于如何实现这一点,您有其他建议吗?

OpenJDK应该包含一个名为
jmap
的工具,该工具可以在给定进程id的情况下创建堆转储。对于确切的语法,您必须查看。如果存在内存泄漏,那么即使在应用程序崩溃之前,也应该在堆转储中看到。我还可以建议浏览堆转储并获取泄漏嫌疑犯列表。

是的,这是我的主意。谢谢你提供的信息:)