代码剖析工具Java Interactive Profiler
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<默认>
************报告展示************
调用次数|总时间|净耗时|总的百分比|净百分比
报告展示1汇总信息,按调用方法耗时多少倒序排列
报告展示2************优点************
a.开源
b.轻量级
c.交互式
d.100%纯java
e.从监控中过滤掉不关心的类或者包
f.可集成
************缺点************
a.后续版本无更新
b.资料相对比较少