1
2
你可以试试 jmap 其中之一 JDK Development Tools . 你可以使用 jhat 使用您的web浏览器来遍历堆转储的输出。 见 this answer 简短的解释。 这种情况经常出现,因此搜索这些工具应该会找到一些替代方法。 |
2
1
我用过 HeapAnalyzer tool from IBM's alphaWorks 很成功。它从Java的堆配置文件中提取输出,并对其进行分析,以显示最有可能的内存泄漏。 |
3
1
你可以使用 NetBeans profiler . 它有两种模式,直接从ide(对于本地主机)启动tomcat profiled,或者使用提供jar的远程profileing和一些在服务器上运行config。 我在一个内存泄漏项目中使用了它,它很有用。 |
4
1
|
5
1
你所看到的是正常的,除非你能证明。 当旧空间中的gc发生时,额外的“消耗空间”消失时,不需要分析堆。 在某一点上,当使用的空间达到最大堆大小时,您将观察到由您使用的默认GC导致的暂停,然后使用的内存将大量减少。只有在gc之后它才不会下降,您可能会感兴趣的是那些对象上仍然保留着什么。 |
6
0
jrockit任务控制可以在连接到jvm时分析内存泄漏。不需要一直拍快照。如果您有一个堆很大的服务器,这可能会很有用。 只需将工具连接到jvm,它就会给您一个趋势表,您可以在其中看到增长最快的对象类型,然后您可以探索对这些对象的引用。您还可以在jvm运行时获得分配跟踪,这样您就可以看到对象在应用程序中的分配位置。 你可以在这里下载 free |