JIP是一個100%純java語言編寫的一個代碼剖析工具。它的特點包括:
1.交互性,允許你在JVM運行過程中隨時啓動或結束剖析器而hprof是在程序啓動時就開啓JVM退出時結束。
2.沒有本地代碼,大部分剖析器都有一些本地組件(native component)因爲這些剖析器使用了需要利用本地組件的JVMPI (Java Virtual Machine Profiling Interface),而JIP是純Java的,它利用了Java5的一些特性。JIP對需要剖析的每一個類的每一個方法添加aspect攔截,這些aspect能夠捕獲執行數據。
3.非常低的開銷,在很多情況下hprof將會造成一個程序運行變慢20倍,而JIP是輕量級的幾乎沒有任何開銷。
4.JIP能夠通過package/class名設置過濾器
************重要配置************
-
部署監控
catalina.sh 文件
JAVA_OPTS="$JAVA_OPTS -javaagent:/jip-src-1.2/profile/profile.jar -Dprofile.properties=/jip-src-1.2/profile/profile.properties "JAVA_OPTS="$JAVA_OPTS -XX:-UseSplitVerifier -javaagent:/jip-src-1.2/profile/profile.jar -Dprofile.properties=/jip-src-1.2/profile/profile.properties " ./file.sh localhost 15519 /jip-src-1.2/client/test-profile2.txt ./start.sh localhost 15519 ./finish.sh localhost 15519
默認端口:15599 <profile.properties>
<profile.properties>
調用層次的深度 : thread-depth=-1(-1 means no limit)
層次圖中輸出方法的個數:
max-method-count=compact(method.compact.threshold.ms=10)
排除列表: exclude=com.mentorgen.tools.profile
ClassLoaderFilter.x
ClassLoaderFilter.1=com.mentorgen.tools.profile.instrument.clfilter.WebAppClassLoaderFilter
ClassLoaderFilter.2=com.mentorgen.tools.profile.instrument.clfilter.StandardClassLoaderFilter<默認>
************報告展示************
調用次數|總時間|淨耗時|總的百分比|淨百分比
彙總信息,按調用方法耗時多少倒序排列
************優點************
a.開源
b.輕量級
c.交互式
d.100%純java
e.從監控中過濾掉不關心的類或者包
f.可集成
************缺點************
a.後續版本無更新
b.資料相對比較少