概述
HPROF是一个性能数据收集工具,可以通过如下命令查看其用法:
hprof.png收集CPU信息
- java -agentlib:hprof=cpu= samples TestMain
- java -agentlib:hprof=cpu=times TestMain
samples和tmes相比,对程序的性能影响比较小,因为它是采用采样的方式进行信息搜集,而times是采用Byte Code Injection (BCI),通过在方法的入口和退出注入代码实现的;当然times统计的count是方法的实际执行次数,而samples则不是;
收集Heap信息
- java -agentlib:hprof=heap=sites
- java -agentlib:hprof=heap=dump
可以看到char[]占用了整个空间的1.25%,那么它是什么时候进行内存分配的呢,根据stack trace=300006找到TRACE 300006,可以看到是通过Arrays.copyOf进行分配的;另外此处的depth为默认值4,如果想看到底是哪调用的,可以调大depth;
Paste_Image.png
网友评论