`
agapple
  • 浏览: 1595956 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

推荐几款工具

    博客分类:
  • java
阅读更多

工具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

 

参数说明:

 

  1. /home/ljh/soft/jvminspect/jvminspect.jar 为下载本工具获得的jar包所放置的路径
  2. outputfile=jvm.inspect.output 这个是本工具的原始数据输出文件名,文件的每一行记录一个类加载事件的详细信息
  3. flushIntervalSecond=300 定时刷新classloaders.html文件的间隔时间
  4. 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/

 

 

来一张效果图:


 

 

 

  • 大小: 52.4 KB
  • 大小: 127.1 KB
  • 大小: 40.2 KB
  • 大小: 43.7 KB
4
0
分享到:
评论
2 楼 agapple 2011-12-08  
zhangyou1010 写道
您好,请教下,我用jvminspect打印出如下日志:
2011-12-07 19:43:45:453 [info] [SimpleAgent.premain] class sun.text.resources.FormatData loaded by [null]
2011-12-07 19:43:45:453 [info] [SimpleAgent.premain] class java.io.Win32FileSystem loaded by [null]
2011-12-07 19:43:45:453 [info] [SimpleAgent.premain] class java.lang.ThreadLocal loaded by [null]


他们都是loaded by [null],他们的类加载器是bootstrap类加载器吗?

谢谢。


是的,jdk启动时初始的classloader
1 楼 zhangyou1010 2011-12-07  
您好,请教下,我用jvminspect打印出如下日志:
2011-12-07 19:43:45:453 [info] [SimpleAgent.premain] class sun.text.resources.FormatData loaded by [null]
2011-12-07 19:43:45:453 [info] [SimpleAgent.premain] class java.io.Win32FileSystem loaded by [null]
2011-12-07 19:43:45:453 [info] [SimpleAgent.premain] class java.lang.ThreadLocal loaded by [null]


他们都是loaded by [null],他们的类加载器是bootstrap类加载器吗?

谢谢。

相关推荐

Global site tag (gtag.js) - Google Analytics