概述
HPROF是一個(gè)性能數(shù)據(jù)收集工具大州,可以通過(guò)如下命令查看其用法:
收集CPU信息
- java -agentlib:hprof=cpu= samples TestMain
- java -agentlib:hprof=cpu=times TestMain
samples和tmes相比颁独,對(duì)程序的性能影響比較小账锹,因?yàn)樗遣捎貌蓸拥姆绞竭M(jìn)行信息搜集赏淌,而times是采用Byte Code Injection (BCI),通過(guò)在方法的入口和退出注入代碼實(shí)現(xiàn)的;當(dāng)然times統(tǒng)計(jì)的count是方法的實(shí)際執(zhí)行次數(shù)道伟,而samples則不是凶杖;
收集Heap信息
- java -agentlib:hprof=heap=sites
- java -agentlib:hprof=heap=dump
可以看到char[]占用了整個(gè)空間的1.25%,那么它是什么時(shí)候進(jìn)行內(nèi)存分配的呢,根據(jù)stack trace=300006找到TRACE 300006,可以看到是通過(guò)Arrays.copyOf進(jìn)行分配的底洗;另外此處的depth為默認(rèn)值4腋么,如果想看到底是哪調(diào)用的,可以調(diào)大depth;