在150G机器上分析大约100G内存消耗的Java应用程序通常需要多长时间?我开始分析大约2个小时,截至目前仅完成了20%。自我开始分析以来,jvm使用的总内存已经增加到150G(接近RAM大小)。 高内存进程在使用yourkit进行性能分析时花费大量时间或者我做错了什么是正常的。是否有可能因为内存已达到RAM内存,正在发生大量磁盘交换,这会减慢内存分析。 如何更快地完成此过程。如果不能让它更快,那么在java应用程序中调查内存泄漏的其他方法是什么?
答案 0 :(得分:2)
你的JVM 是大:)
如果你有一个正在运行的JVM,获取有关堆中对象的一些信息的最快方法是采用jmap直方图:
jmap -histo:live <pid>
它将打印堆中的所有活动对象(:live do a gc),它们的实例编号和它们的(浅)大小。
当然它不适用于复杂的分析,但通常足以找到泄漏,特别是如果泄漏很大:将直方图与泄漏前的直方图进行比较。
请参阅http://docs.oracle.com/javase/7/docs/technotes/tools/share/jmap.html上的文档。