1

是否有类似Find which methods为 Sun JAVA分配大对象的功能?

-Xdump:stack:events=allocation,filter=#1k

或者

-Xdump:stack:events=allocation,filter=#2m..4m
4

2 回答 2

0

我不确定是否有办法只使用 JVM 的命令行来执行此操作,但您应该能够使用 hprof 转储堆,然后使用 jhat 分析转储以查找大对象以及它们的分配位置(假设当 hprof 转储它时它们仍在堆中)。

您可以像这样使用 hprof 转储堆:

java -agentlib:hprof=heap=dump

这将为您提供一个文件 .hprof,然后您可以运行 jhat:

jhat <pid>.hprof

jhat 将在以下位置运行网络服务器:

 http://localhost:7000. 

所以把你的浏览器指向那里然后看看。

于 2013-06-05T17:01:23.967 回答
0

也存在通过 Java 代理执行此操作的本机方式:code.google.com/p/java-allocation-instrumenter — Martin 2013 年 6 月 6 日在 3:26 另请参阅如何在 Java 中查找对象的所有引用者?

于 2014-04-23T14:12:11.917 回答