如何使用 java 堆分析器 (HPROF)

How to use java heap profilers (HPROF)

凭借 java 'hprof' 的基本知识,我尝试按照 oracle 文档

执行以下命令
java -agentlib:hprof Hello.class

但我得到以下错误而不是分析信息

Caused by: java.lang.ClassNotFoundException: Hello.class
    at java.net.URLClassLoader.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)

有人可以说明应该如何正确使用 hprof 以获得分析信息吗?

您只需删除 class 末尾的 .class,因为 Java 默认情况下会搜索 class 个文件。

java -agentlib:hprof Hello

但是,要获得堆分配配置文件,您需要添加一些参数...

java -agentlib:hprof=heap=sites Hello

更多信息请输入

java -agentlib:hprof=help

并访问http://docs.oracle.com/javase/8/docs/technotes/samples/hprof.html