1

我有一台服务器在和上运行Java应用程序。OpenJDKCentOS

但是,该应用程序似乎每隔几周就会发生内存泄漏和崩溃。问题是尽管HeapDumpOnOutOfMemoryError指定了没有堆转储生成。如果我创建了一个导致应用程序立即崩溃的人为内存泄漏,则会生成适当的堆转储。

现在我要求的不是这个问题的完整解决方案,而是一个好的策略。

例如,有没有办法在应用程序运行一周后按需提取堆转储?有没有办法弄清楚出了什么问题OpenJDK?您对如何解决这个问题有任何替代建议吗?

4

1 回答 1

1

OpenJDK 应该包含一个名为的工具,该工具jmap可以在给定进程 ID 的情况下创建堆转储。对于确切的语法,您必须查看jmap 手册页。如果存在内存泄漏,那么即使在应用程序崩溃之前,这也应该在堆转储中可见。我还可以推荐eclipse 内存分析器来浏览堆转储并获取泄漏嫌疑人列表。

于 2011-08-18T22:32:55.647 回答