0

在 150G 的机器上分析一个消耗大约 100G 内存的 Java 应用程序通常需要多长时间?我大约 2 小时前开始分析,到目前为止只完成了 20%。自从我开始分析以来 jvm 使用的总内存已上升到 150G(接近 RAM 大小)。在使用 yourkit 进行分析时,高内存进程需要大量时间是否正常,或者我做错了什么。由于内存已达到 RAM 内存,是否有可能发生大量磁盘交换,这会减慢内存分析速度。我怎样才能使这个过程更快。如果无法使其更快,那么在 Java 应用程序中调查内存泄漏的其他方法是什么?

4

1 回答 1

2

那么你的JVM很大:)

如果您有一个正在运行的 JVM,获取有关堆中对象的一些信息的最快方法是获取 jmap 直方图:

jmap -histo:live <pid>

它将打印堆中的所有活动对象(:live 执行 gc)、它们的实例数和它们的(浅)大小。

当然它不适合复杂的分析,但它通常足以让您找到泄漏,特别是如果泄漏很大:将直方图与泄漏之前的直方图进行比较。

请参阅http://docs.oracle.com/javase/7/docs/technotes/tools/share/jmap.html上的文档。

于 2015-04-09T21:54:43.873 回答