java工具系列-hprof

概述

HPROF是一个性能数据收集工具,可以通过如下命令查看其用法:

hprof.png

收集CPU信息

  1. java -agentlib:hprof=cpu= samples TestMain
  2. java -agentlib:hprof=cpu=times TestMain
cpu.png

samples和tmes相比,对程序的性能影响比较小,因为它是采用采样的方式进行信息搜集,而times是采用Byte Code Injection (BCI),通过在方法的入口和退出注入代码实现的;当然times统计的count是方法的实际执行次数,而samples则不是;

收集Heap信息

  1. java -agentlib:hprof=heap=sites
  2. java -agentlib:hprof=heap=dump
alloc.png
trace.png

可以看到char[]占用了整个空间的1.25%,那么它是什么时候进行内存分配的呢,根据stack trace=300006找到TRACE 300006,可以看到是通过Arrays.copyOf进行分配的;另外此处的depth为默认值4,如果想看到底是哪调用的,可以调大depth;

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容