是否有类似Find which methods为 Sun JAVA分配大对象的功能?
-Xdump:stack:events=allocation,filter=#1k
或者
-Xdump:stack:events=allocation,filter=#2m..4m
我不确定是否有办法只使用 JVM 的命令行来执行此操作,但您应该能够使用 hprof 转储堆,然后使用 jhat 分析转储以查找大对象以及它们的分配位置(假设当 hprof 转储它时它们仍在堆中)。
您可以像这样使用 hprof 转储堆:
java -agentlib:hprof=heap=dump
这将为您提供一个文件 .hprof,然后您可以运行 jhat:
jhat <pid>.hprof
jhat 将在以下位置运行网络服务器:
http://localhost:7000.
所以把你的浏览器指向那里然后看看。
也存在通过 Java 代理执行此操作的本机方式:code.google.com/p/java-allocation-instrumenter — Martin 2013 年 6 月 6 日在 3:26 另请参阅如何在 Java 中查找对象的所有引用者?