最近在工作中經常和性能壓測工作打交道,積累了一些性能分析經驗,我覺得這些經驗對每一個開發者都有幫助的,能開發出性能高的代碼也是我們的最終目標。
由易到難,我們逐步介紹不同命令的用法和好處,這些命令是如何幫助我們開發人員進行性能分析的。
一、開發者的自測利器-Hprof命令
1、示例演示
例子程序:
/**
* PROJECT_NAME: test
* DATE: 16/7/22
* CREATE BY: chao.cheng
**/
public class HProfTest {
public void slowMethod() {
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
public void slowerMethod() {
try {
Thread.sleep(10000);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
HProfTest test = new HProfTest();
test.slowerMethod();
test.slowMethod();
}
}
注:這是一段測試代碼通過sleep方法進行延時,在程序運行過程中很慢,我想知道到底是哪段程序影響的整體性能呢?
我在這個java程序中,加了如下運行參數:
-agentlib:hprof=cpu=times,interval=10
/*
times:java函數的執行時間
hprof=cpu是針對cpu統計時間
interval=10 采樣10次
*/
再次運行這段程序顯示如下圖:
這時候還發現在工程目錄里面,多了一個文本文件java.hprof.txt,如下圖所示:
內容如下:
CPU TIME (ms) BEGIN (total = 11542) Fri Jul 22 11:00:34 2016
rank self accum count trace method
1 86.65% 86.65% 1 303422 com.test.HProfTest.slowerMethod
2 8.66% 95.31% 1 303423 com.test.HProfTest.slowMethod
3 0.25% 95.56% 36 300745 java.util.zip.ZipFile.<init>
4 0.20% 95.76% 36 300434 java
原文轉自:http://www.jianshu.com/p/6df2963fe94e