确实好用-visualvm

JavaGG 发布于 2009/02/17 23:26
阅读 2K+
收藏 4

今天看到blogjava上有人放消息VisualVm出了,好奇下来玩玩,发现这玩意出乎意料的真的好。

profile工具用的多了,让我这么喜欢倒是很少,总结一下优点 。

1. 绿色软件,不用安装
我这人出名的懒,最烦 装软件,起初以为这东西是和jdk捆绑的,看看说明发现可以独立下载才来了兴趣,下了zip包以后就直接可以运行,也不需要限制特定的jdk版本,1.5 后的都可以。对比起来bea的messition control也是监控vm的,但是要和eclipse集成就实在麻烦。

2. 使用简单,不需要做特殊设置

基本上,启动visual jvm, 然后再启动你的java应用不管是tomcat还是 swing应用,就可以检测到了进程,再open 就可以看到各种信息了。我在eclipse中启动一个应用也可以顺利在local node上找到对应的节点。这样白痴的用法特别招菜鸟喜欢。

如果需要对应用做profile 最好设置一下启动参数-Xshare:off ,不过试验发现不设问题也不大。

监 控界面分成4部分, Heap, permgen, 线程,class装载情况。 简单明了,特别是perm这块,以前很少有工具注意这个。

3. 可以对监控进程做thread dump和 memory dump, 另外也支持对jvm dump文件的进行图形化的分析和比对。

dump 文件是标准的jvm格式, 也就是这工具还可以用来代替其他日志分析工具。


美 中不足的是无法象jrobe那样直观的反映方法的调用堆栈。不过也基本够了。

4. 对线程的图形化分析特别招人喜欢。
包括gc 预收集线程,一些系统线程,都能清晰的显示出来,可以方便理解系统的运作情况。懒的截图了。总之和其他工具比就是直观很多。

毫不犹豫的又 把某些大东西从自己的tool list上删除了。不过有点疑问,这东西有linux版本么?

加载中
1
钛元素
钛元素

我的是NTFS的,还是不行.配置了权限依旧不行.

转:

前一阵在公司里使用 jconsle 时一切正常,然而在家中的机器上却出现了标题所示的问题: jconsole 和 jps 无法显示本地 Java 进程列表。

当时直接利用 -Dcom.sun.management.jmxremote.port=port 启动目标 java 进程并在 jconsole 中通过 localhost:port 方式成功连接上目标 java 进程。有了这个 work around 之后,对这个问题也就没有太在意。

昨天让在公司兼职的前主席同学开始熟悉 JMX ,结果在他的机器上也出现了同样的问题,我也同样地用上面的偷懒 work around 解决之。不过今天,前主席同学发给了我这个问题的正解。当时没有细看,回家后才想起又搜了一下,使用的 Google 关键字为“ jconsole jps local process ”,第一个页面就是 SDN 上一个讨论这个问题的帖子,跟下去之后总结如下:

在 Win32 系统上,每个 java 进程启动之后都在 %TMP%\hsperfdata_user ( user 为当前登录用户名)目录下建立一个以该 java 进程 pid 为文件名的文件,用以记录该 java 进程的一些信息。而 jconsole 和 jps 正是利用这些文件来获取当前系统中 java 进程的信息的。根据

http://java.sun.com/j2se/1.5.0/docs/guide/management/faq.html#win1

的解释,如果该目录位于 FAT 文件系统下,或者位于 NTFS 文件系统下,但当前用户对%TMP%\hsperfdata_user目录的访问权限不足,无法创建和写入该文件,jconsole 和 jps 就抓瞎了。

我的情况属于第二种,解决方法自然是对给该目录进行正确的 NTFS 权限设置,方法有不少,比如可以利用 cygwin 下的 chmod 来间接修改 NTFS 的 ACL ,或者直接使用 cacls 来设置该目录的 ACL:

cacls %TMP%\hsperfdata_user /G Everyone:F

以上命令是对所用用户赋予目标目录的所有访问权限——这么做自然是偷了懒……但是当初看 cygwin 手册的时候就被 NTFS 的 ACL 的复杂度给吓到了,一时半会儿实在不想深究这个玩意儿……

另外,为什么该目录位于 FAT 文件系统下也会出问题,我还不知道具体原因。http://rhythm-zju.blog.163.com/blog/static/31004200801502135892/

汉唐
汉唐
谢谢,遇到这个问题了,学习了。
0
李力
李力

这个东西有个问题,启动以后检测不到本地的java 程序。

我的c盘是FAT32 的。

0
囧南风囧
囧南风囧

确实是好东西!

0
sunyh
sunyh
这个东西本身就是java写的。可以支持 linux
0
tonyley
tonyley
用用试试,
返回顶部
顶部