visualvm 监控 远程 机器上的 Java 程序
JDK里面本身就带了很多的监控工具,如JConsole等。
我们今天要讲的这款工具visualvm,就是其中的一款。但是这款工具是在JDK1.6.07及以上才有的。它能够对JAVA程序的JVM堆、线程、类加载情况、JVM GC情况进行监控,是一个很好的免费的监控工具。
监控范围:JDK1.4及以上版本的程序都能够监控。
它在JDK里面叫做: jvisualvm,当然我们可以到它的官方网站上去下载它的最新版本,当前最新版本是:
1.3.2,如下所示:

在图中已经列出了它的官方网站地址:
首先,打开visualvm,它会自动检索到本地机器上java应用程序,如下图:

双击它就可对它开始进行各项数据的监控了。
但是监控远程机器上的Java应用程序就没有这么简单了,需要进行相应的配置,
首先我们来看下visualvm监控远程机器上Java应用程序的原理:

由上图可知,visualvm必须通过jstatd服务来取得远程机器上Java应用程序的运行数据。
所以我们得先在要监控的机器上启动jstatd服务(这个服务是在远程机器上启动的)
1、首先在远程机器上配置好Java环境:
JAVA_HOME,CLASSPATH,PATH
配置完之后,在cmd里面通过:java -version和javac -version,确定Java环境配置完成
2、 创建一个文件:jstatd.all.policy(名字可以变,扩展名不可以变),内容如下:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
这个文件的作用是让jstatd服务能够读取机器上的java应用程序的运行数据
3、把这个文件放到:%JAVA_HOME%\bin目录下。
4、打开cmd,把目录切到:%JAVA_HOME%\bin目录下,然后执行如下命令:
jstatd -J-Djava.security.policy=jstatd.all.policy
这个时候,如果cmd是如下所示的状态,则说明jstatd服务启动成功

注:上面启动的jstatd服务,默认端口是1099,也可以在上面命令中指定端口号
按照上面的原理图,在远程机子上启动jstatd服务之后,visualvm就可以监控到远程机器上的JAVA应用程序了,按下面操作即可:
1、在本地visualvm界面上添加远程主机:
在左边“应用程序”中,右击“远程”,选择“添加远程主机”

然后在弹出的对话框里面输入所要监控的远程主机的IP,如下所示:

刚开始进入时,不是这个对话框,点击“高级设置”就会展开余下的部分,就是上面所示的对话框,在里面可以设置远程机器上jstatd服务所用的端口号,默认是1099,可以通过勾选“显示名称”,在里面输入自己想要的远程主机名,最后点击确定即可。
2、展开刚所新建的远程主机,就可看到运行在远程机器上的JAVA应用程序了,如下所示:

通过双击里面的应用程序,就可以像本地应用程序一样,对它进行监控了。
到此,visualvm远程监控部分算是完成了。
最后需要注意的一点是,jdk6上的visualvm不能够监控到jdk7上的java应用程序,即使jstatd服务成功启动也不行。
来自: http://hanwangkun.iteye.com/blog/1195526
visualvm 监控 远程 机器上的 Java 程序的更多相关文章
- 转:visualvm监控远程机器上的Java程序
转自:http://hanwangkun.iteye.com/blog/1195526 JDK里面本身就带了很多的监控工具,如JConsole等.我们今天要讲的这款工具visualvm,就是其中的一款 ...
- visualvm监控远程机器上的Java程序
源文:http://hanwangkun.iteye.com/blog/1195526
- 使用Java VisualVM监控远程JVM
我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualV ...
- Java VisualVM监控远程JVM
我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualV ...
- 开发机器上利用vs2013调试远程IIS上的c#程序
当远程IIS上的C#程序出现问题,怎么排错,一般我们通过看日志排查错误的方法,这种方法在程序异常日志都打印出来的情况下是可以解决的,但如果程序日志不详细,或者从日志看不出有用的内容的时候怎么排错? 本 ...
- 日常开发技巧:在远程机器上直接使用adb
背景 嵌入式开发中,开发工作是在远程服务器上进行的.当需要adb推送一个文件到开发板时,则需要重新在本地机器中找到该文件,再执行命令.这样的操作比较麻烦. 下面介绍我的解决方式. sshfs挂载 首先 ...
- 自动输入密码执行远程服务器上的java -version命令
自动输入密码执行远程服务器上的java -version命令 for i in $(seq 1 253);do sshpass -p "W123hz" ssh weili@192. ...
- jenkins中通过Publish Over SSH将项目部署到远程机器上
Publish Over SSH插件使用在使用Publish Over SSH之前,需要制作SSH私钥.机器间做免密登录配置.假设机器A,ip为192.168.AA.AAA,机器B: 192.168. ...
- Android驱动入门-在Android系统上运行JAVA程序
在linux上运行java程序,直接用javac编译,再用java运行就行了.但是在Android上,由于虚拟机和pc端的不同,所以操作方法也是不一样的. 如果想在Android上运行Hello wo ...
随机推荐
- 关于automatic_Panoramic_Image_Stitching_using_Invariant_features 的阅读笔记
并没有都读完,不过感觉还是有必要做一个笔记的,毕竟这只是随笔不是文章,所以可以有多少写多少,也算是工作总结了,最重要的是这个好在可以,完成所有有意义文档的检索,比起自己的word来说高级很多~~~. ...
- kali linux 2.0 折腾笔记
1. 配置SSH远程登录 root@kali:~# vi /etc/ssh/sshd_config #PermitRootLogin without-password PermitRootLogin ...
- 关于SWT/JFace的事件模型的四种方式
事件的4种写法 1.匿名内部类方式的写法 2.命名内部类的写法 3.外部类写法 4.实现监听接口的写法 第一种用匿名内部类的方法: public class HelloWorld { private ...
- Chomp!游戏 (组合游戏Combinatorial Games)
http://blog.csdn.net/acdreamers/article/details/17021095 有一个n*m的棋盘,每次可以取走一个方格并拿掉它右边和上面的所有方格.拿到左下角的格子 ...
- [MSDN] 使用 SharePoint 2013 中的 JavaScript 库代码完成基本操作
MSDN:http://msdn.microsoft.com/zh-cn/library/jj163201.aspx 了解如何编写代码以在 SharePoint 2013 中使用 JavaScript ...
- 跨域方法之CORS
跨域的方法非常之多,如果想了解其中CORS,不要浪费时间,看下面三个就够了 了解CORS https://developer.mozilla.org/en-US/docs/Web/HTTP/Acc ...
- Spark与Hadoop计算模型的比较分析
http://tech.it168.com/a2012/0401/1333/000001333287.shtml 最近很多人都在讨论Spark这个貌似通用的分布式计算模型,国内很多机器学习相关工作者都 ...
- 安装Numpy和matplotlib
(1)测试程序 这是我从网上(http://www.open-open.com/lib/view/open1393488232380.html)找到的一个使用Numpy和matplotlib的 ...
- linux下挂载iso镜像的方法
新建目录/mnt/cdrom 执行命令 mount /dev/cdrom /mnt/cdrom [root@ocdp1 cdrom]# mount /dev/cdrom /mnt/cdrom moun ...
- PowerDesigner使用教程 —— 概念数据模型 (转)
一.概念数据模型概述 概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充.它从用户的观点出发对信息进行建模,主要用于 ...