工具1:jvminspect类加载跟踪
taobao仁兄写的一个,jvminspect(jvm类加载分析跟踪器),你还在为jboss log4j类冲突所苦恼吗,那就试试这一个东东把。
使用:增加jvm参数:
JAVA_OPTIONS=$JAVA_OPTIONS -javaagent:/home/ljh/soft/jvminspect/jvminspect.jar=outputfile=jvm.inspect.output,flushIntervalSecond=300 -DHtmlFlusher.enableHyperlink=false
参数说明:
- /home/ljh/soft/jvminspect/jvminspect.jar 为下载本工具获得的jar包所放置的路径
- outputfile=jvm.inspect.output 这个是本工具的原始数据输出文件名,文件的每一行记录一个类加载事件的详细信息
- flushIntervalSecond=300 定时刷新classloaders.html文件的间隔时间
- HtmlFlusher.enableHyperlink=false 是否在classloaders.html中加入超链接。加入超链接会使文件体积变大约1倍,但是方便点击查看缩写对应表等
实现介绍:
使用了jdk1.5 Instrumentation技术,通过premain方法添加自己的ClassFileTransformer,这里就是记录每次class装载时,记录具体class的location , class loader等信息。通过一个定时Thread输出信息到文件。
可以改进的点:
jdk1.6支持动态attach的功能,也就是在一个在运行时的系统。dump出当前系统中使用的class信息,方便测试环境排查问题。
具体Instrumentation可以参看下http://www.ibm.com/developerworks/cn/java/j-lo-jse61/。
最后上一张效果图:
工具2: jd-gui反编译
java反编译工具,推荐用jd-gui。 用过decomp感觉不太好用,今天无意中下载了jd-gui适用了下,的确不错。
觉得几个不错的点:
- 支持属性的高亮
- 类名支持link打开
- package导航栏
绿色版,不可思议有linux版本,非常不错。
下载: http://java.decompiler.free.fr/?q=jdgui
来张效果图:
工具3:Ksar系统监控
一个监控的工具,用过linux的人应该对sar系统监控命令并不陌生。
1. console的输出统计总不是那么的直观,最好是有一个图形化的工具可以帮助我们分析。
2. 我们自己在做压力测试,因为用的是一些简单的开源的ab,jmeter工具,缺少对服务器的系统监控。如果有个监控系统能按照我们特定的需求监控数据那就非常方便了。
不知大家是不是也有类似的想法,这里推荐一个kSar,完全由JAVA编写。
个人sar监控参数: sar -q -u ALL -d -n DEV -I XALL -w -r 10 10000 (10秒抓取一次数据,抓取10000次)
几个参数介绍: 也可以直接man sar
- -q Report queue length and load averages. The following values are displayed。 说白了就是load这一概念的数据
- -u Report CPU utilization. cpu
- -d Report activity for each block device (kernels 2.4 and newer only) 磁盘I/O
- -n Report network statistics. 网络
- -I Report statistics for a given interrupt 系统中断
- -w Report system switching activity 上下文切换
下载链接: http://sourceforge.net/projects/ksar/
来一张效果图: