Java 在没有生成堆转储的情况下使用正确的策略
我在Java 在没有生成堆转储的情况下使用正确的策略,java,centos,openjdk,Java,Centos,Openjdk,我在OpenJDK和CentOS上找到了一台运行Java应用程序的服务器 然而,应用程序似乎有内存泄漏,每隔几周就会崩溃一次。 问题在于,尽管指定了heapdumponotofmemoryerror,但没有生成堆转储。 如果我创建了一个人工内存泄漏,立即导致应用程序崩溃,则会生成一个适当的堆转储 现在,我不是要彻底解决这个问题,而是要一个好的策略 例如,当应用程序在一周后运行时,是否有办法按需提取堆转储?有没有办法找出OpenJDK中的错误?关于如何实现这一点,您有其他建议吗?OpenJDK应该
OpenJDK
和CentOS
上找到了一台运行Java
应用程序的服务器
然而,应用程序似乎有内存泄漏,每隔几周就会崩溃一次。
问题在于,尽管指定了heapdumponotofmemoryerror
,但没有生成堆转储。
如果我创建了一个人工内存泄漏,立即导致应用程序崩溃,则会生成一个适当的堆转储
现在,我不是要彻底解决这个问题,而是要一个好的策略
例如,当应用程序在一周后运行时,是否有办法按需提取堆转储?有没有办法找出OpenJDK中的错误?关于如何实现这一点,您有其他建议吗?OpenJDK应该包含一个名为
jmap
的工具,该工具可以在给定进程id的情况下创建堆转储。对于确切的语法,您必须查看。如果存在内存泄漏,那么即使在应用程序崩溃之前,也应该在堆转储中看到。我还可以建议浏览堆转储并获取泄漏嫌疑犯列表。是的,这是我的主意。谢谢你提供的信息:)