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

远程监控JVM--VisualVM

阅读更多

  对于使用命令行远程监控jvm太麻烦?那可以试试sun提供的VisualVMjdk1.6自带了,可以到bin目录下找到它。

         什么也不说了,直接运行此exe,打开界面如下:

 



 

(图1

         (上图1左边的数可以看到,VisualVM分为3类,Local它会自动侦测到,并显示出来)

         双击Local下的任一节点,看到右边的变化(有点像JProfiler

 

 



 



 

(图2

         看看Visual GC的界面(Java Heap的使用,一目了然)

 



 

(图3

         再在左边的树形窗口,右键看看(看到了Thread Dump, Heap Dump

 



 

(图4

         Thread Dump很快,马上就可以看到结果

 



 

(图5

         Heap Dump要稍花费一些时间(可以看到当前heap里对象的数量及占用的比例,做OOM很好用)

 



 

(图6

                   双击每一行,可以看到具体的信息

 



 

(图7

 

 

我们再看一下图1,左边的窗口中,第二个节点—Remote,它可以用来操作远程机器。远程机器需要启动一个daemon:jstatd

1、远程机器启动jstatd

      1.1、        首先需要准备一个java.policy文件,保存到如/home/admin/jstatd.java.policy

grant codebase "file:${java.home}/../lib/tools.jar" {

   permission java.security.AllPermission;

};

      1.2、        启动jstatd

jstatd -J-Djava.security.policy=/home/admin/jstatd.java.policy -J-Djava.rmi.server.logCalls=true

      1.3、        同时需要执行一个命令看看(linux需要)

Hostname –i

如果显示是127.0.0.1,则需要修改/etc/hosts文件,去掉对本机名的配置,让本机名解析到它的IP地址,如10.20.131.214

2、连接远程机器

 



 

(8)

3、点击OK,看到会连接到远程机器,并显示出它下面的java进程。

 



 

(图9

      到 这个时候的操作,就和上面Local的描述操作一样了。

 

最后,要注意的地方:

最好使用jdk1.6以上版本,不然visualVM很多功能不能用。

你自己也可以写一个VisualVM插件(基于NetBeans的插件体系),完成特殊的任务。

  • 大小: 82.3 KB
  • 大小: 78.1 KB
  • 大小: 68.1 KB
  • 大小: 73.4 KB
  • 大小: 35.3 KB
  • 大小: 78.7 KB
  • 大小: 94.2 KB
  • 大小: 63.2 KB
  • 大小: 29.9 KB
  • 大小: 3.6 KB
分享到:
评论
27 楼 menuhin 2010-10-12  
太感谢楼主了,正需要呢!!学习了!
26 楼 opleo 2010-10-12  
jprofiler是很强大,但其要占用一部份资源
而LZ提到的JDK6以后自带的这款功能方面弱些,但相对来说占用的资源也少些
25 楼 LifeFree 2010-03-02  
这个点错误对话框的troubleshooting链接,一般都是要把环境变量TMP改到支持NTFS文件系统的地方。
macrochen 写道
我在对本地应用进行检测的时候为什么总是提示"无法检测到本地java应用程序"这个是怎么回事?

24 楼 LifeFree 2010-03-02  
貌似要被监测的程序是在JRE6的环境下运行才能监测,我的程序都是jre1.4 ,jre5的老古董。
23 楼 rox 2010-03-02  
macrochen 写道
我在对本地应用进行检测的时候为什么总是提示"无法检测到本地java应用程序"这个是怎么回事?


这里基本都回答了,“在Windows上使用jds无法显示运行的Java程序”
http://movingboy.iteye.com/blog/360494

我的错误比较低级,win2003+FAT32,怎么改也不行,后来使用-XX:+PerfBypassFileSystemCheck启动一个Java程序,VisualVM就自动找到了。没注意看使用帮助,呵呵!
22 楼 murainwood 2010-02-02  
我常用visualvm和jhat这两个内置的工具。visualvm和jhat里内置了OQL查询语言的支持。
这对分析dump下来的内存镜像,是很大的方便
21 楼 macrochen 2010-02-02  
我在对本地应用进行检测的时候为什么总是提示"无法检测到本地java应用程序"这个是怎么回事?
20 楼 byk 2009-12-16  
本机ip:10.10.100.132
服务器ip:10.10.100.41
实验失败:
FINER: RMI TCP Connection(7)-10.10.100.132: [10.10.100.132: sun.tools.jstatd.RemoteHostImpl[-238e1c3f:12597086ff9:-7fff, 4231296780153226062]: public abstract int[] sun.jvmstat.monitor.remote.RemoteHost.activeVms() throws java.rmi.RemoteException,sun.jvmstat.monitor.MonitorException]
Dec 16, 2009 6:41:40 PM sun.rmi.server.UnicastServerRef logCall
FINER: RMI TCP Connection(7)-10.10.100.132: [10.10.100.132: sun.tools.jstatd.RemoteVmImpl[-238e1c3f:12597086ff9:-7ff5, 1925575096304853058]: public abstract byte[] sun.jvmstat.monitor.remote.RemoteVm.getBytes() throws java.rmi.RemoteException]
Dec 16, 2009 6:41:40 PM sun.rmi.server.UnicastServerRef logCall
19 楼 freesky110 2009-12-16  
lixjluck 写道
xieke 写道
能跟jprofiler一样定位到每个方法占用的cpu和内存吗?

没这个功能,还得用jprofiler


对于本地JVM的监控,文档上说可以通过Profiler选项卡可以得到与JProfiler一样的cpu信息,但是我用了,没有办法使用这个功能,不知道为什么?大家又用个这个功能吗?分享一下!
18 楼 wave-labs 2009-11-17  
这个东东挺不错,我主要用它检查死锁。
17 楼 argan 2009-11-16  
恩,不错,楼主的分享挺好的
16 楼 lixjluck 2009-11-16  
xieke 写道
能跟jprofiler一样定位到每个方法占用的cpu和内存吗?

没这个功能,还得用jprofiler
15 楼 lixjluck 2009-11-16  
langyu 写道
嗯,目录下没找到这个文件啊

那你可以到 https://visualvm.dev.java.net/ 单独下载。
14 楼 lixjluck 2009-11-16  
zxwu 写道
linux下,怎样才能不修改/etc/hosts文件

需要root权限的
一般我们会配置 127.0.0.1 localhost dev1(你的机器名)
需要改为
127.0.0.1 localhost
10.0.0.1 dev1
即可。
13 楼 zxwu 2009-11-16  
linux下,怎样才能不修改/etc/hosts文件
12 楼 langyu 2009-11-16  
嗯,目录下没找到这个文件啊
11 楼 clonepig 2009-11-16  
gooooooooood
10 楼 linliangyi2007 2009-11-15  
这个是好贴,要广而告之
9 楼 javatar 2009-11-15  
用VisualVM做Profiler还是不错的,基本的数据都能搞定

BTW: 小军的头像很有型
8 楼 coolspeed 2009-11-14  
独立思考 写道
刚才看了一下,貌似mac中没有这个阿

mac上的jvm版本很新的才有,我记得。可以自己去下载的。我在win上下了jdk7就没有,自己去下载的。

相关推荐

    visualvm监控jvm及远程jvm监控方法

    visualvm监控jvm及远程jvm监控方法

    Java VisualVM监控远程JVM(详解)

    下面小编就为大家带来一篇Java VisualVM监控远程JVM(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    visualvm中文版

    visualvm,java jvm监控工具,可远程调试程序,idea下载-visualvm-launcher插件容易使用

    VisualVM介绍

    VisualVM安装、功能介绍、远程监控设置

    JAVA JVM内存监控工具总结

    VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力。所有这些都是免费的!它囊括的命令行工具包括jps,jstat,jmap,jinfo,jstack,JConsole,这些工具与JDK的标准版本是一致的。 jinfo:...

    java虚拟机监控

    java 虚拟机监控,构建本地监控远程java虚拟机的visualvm应用,更加直观的分析java 应用的CPU、内存、堆/栈、线程等情况

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 112 5.2.5 服务器JVM进程崩溃 / 113 5.3 实战:Eclipse运行速度调优 / 114 5.3.1 调优前的程序运行状态 / 114 5.3.2 升级JDK 1.6的性能变化及兼容问题 / 117 5.3.3 编译时间和类加载时间的优化 / 122 5.3.4 ...

    新一代Java开发工具 可视化编辑 测试运维自动化.rar

    VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)...

    Java虚拟机

    4.3.2 VisualVM:多合一故障处理工具 4.4 本章小结 第5章 调优案例分析与实战 5.1 概述 5.2 案例分析 5.2.1 高性能硬件上的程序部署策略 5.2.2 集群间同步导致的内存溢出 5.2.3 堆外内存导致的溢出错误 ...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

Global site tag (gtag.js) - Google Analytics