![]() |
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 |
![]() |
NOBUD · 最大堆插入函数实现C++ 3 年前 |
![]() |
JimBelushi2 · 合并排序创建内存堆 7 年前 |
![]() |
Arda İbrahim Gökçe · 在遍历最小堆时获取垃圾值 7 年前 |
![]() |
Alexy Grabov · 查找最大堆中k个最大元素的位置 7 年前 |
![]() |
Maxxx · 使用堆在O(N log K)时间内查找前K个元素 7 年前 |
![]() |
Karthik · 限制Go堆接口实现的优先级队列的大小 7 年前 |
![]() |
mourinho · 使用数组实现最小堆[关闭] 7 年前 |