THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
注意,linux系统支持所有profiler功能,mac系统支持部分功能,windows系统不支持profiler功能。
常用的profiler指令如下:
Code Block | ||
---|---|---|
| ||
#开始抽样,-e可用于指定抽样的event,可以是cpu或alloc profiler start -e cpu; #查看抽样任务执行的时间 profiler status; #查看抽样任务的抽样数量 profiler getSamples; #结束抽样,并将结果的火焰图输出为html格式,--file可指定输出的文件 profiler stop --format html --file /mnt/d/arthas/cpu.html; |
抽样任务输出火焰图后,就要基于火焰图进行分析。
分析思路总结只有一句话:火焰图里,横条越长,代表使用的越多,从下到上是调用堆栈信息。
越宽表示被调用越多执行时间长,越高表示调用栈越深。
火焰图就是看顶层的哪个函数占据的宽度最大。只要有"平顶"(plateaus),就表示该函数可能存在性能问题。
CPU抽样
启动一次CPU抽样任务,执行一段时间后即可关闭,并输出结果火焰图。
...
进行内存分析时,堆分析器需要HotSpot调试符号,Oracle JDK已经将它们嵌入到libjvm.so中,但是OpenJDK在构建时,被打包到了单独的包中,如要在Debian/Ubuntu上安装OpenJDK调试符号中,但是OpenJDK在构建时,被打包到了单独的包中。
因此在使用内存抽样之前,需安装OpenJDK调试符号:
Code Block |
---|
apt install openjdk-8-dbg; |
...