JDK里面本身就带了很多的监控工具,如JConsole等。

  我们今天要讲的这款工具visualvm,就是其中的一款。但是这款工具是在JDK1.6.07及以上才有的。它能够对JAVA程序的JVM堆、线程、类加载情况、JVM GC情况进行监控,是一个很好的免费的监控工具。

监控范围:JDK1.4及以上版本的程序都能够监控。

它在JDK里面叫做: jvisualvm,当然我们可以到它的官方网站上去下载它的最新版本,当前最新版本是:

1.3.2,如下所示:

在图中已经列出了它的官方网站地址:

http://visualvm.java.net

首先,打开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 程序的更多相关文章

  1. 转:visualvm监控远程机器上的Java程序

    转自:http://hanwangkun.iteye.com/blog/1195526 JDK里面本身就带了很多的监控工具,如JConsole等.我们今天要讲的这款工具visualvm,就是其中的一款 ...

  2. visualvm监控远程机器上的Java程序

    源文:http://hanwangkun.iteye.com/blog/1195526

  3. 使用Java VisualVM监控远程JVM

    我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualV ...

  4. Java VisualVM监控远程JVM

    我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualV ...

  5. 开发机器上利用vs2013调试远程IIS上的c#程序

    当远程IIS上的C#程序出现问题,怎么排错,一般我们通过看日志排查错误的方法,这种方法在程序异常日志都打印出来的情况下是可以解决的,但如果程序日志不详细,或者从日志看不出有用的内容的时候怎么排错? 本 ...

  6. 日常开发技巧:在远程机器上直接使用adb

    背景 嵌入式开发中,开发工作是在远程服务器上进行的.当需要adb推送一个文件到开发板时,则需要重新在本地机器中找到该文件,再执行命令.这样的操作比较麻烦. 下面介绍我的解决方式. sshfs挂载 首先 ...

  7. 自动输入密码执行远程服务器上的java -version命令

    自动输入密码执行远程服务器上的java -version命令 for i in $(seq 1 253);do sshpass -p "W123hz" ssh weili@192. ...

  8. jenkins中通过Publish Over SSH将项目部署到远程机器上

    Publish Over SSH插件使用在使用Publish Over SSH之前,需要制作SSH私钥.机器间做免密登录配置.假设机器A,ip为192.168.AA.AAA,机器B: 192.168. ...

  9. Android驱动入门-在Android系统上运行JAVA程序

    在linux上运行java程序,直接用javac编译,再用java运行就行了.但是在Android上,由于虚拟机和pc端的不同,所以操作方法也是不一样的. 如果想在Android上运行Hello wo ...

随机推荐

  1. cvThreshold

    看了很多很坑的文章. 呵呵哒.而且基本上都是一个地方转载的,英文翻译我用你单独给一个词条么?就不能负点儿责? cvThreshold(img4, img3, 0, 128, CV_THRESH_OTS ...

  2. 简单理解前端web开发的MVC模式

    随着前端Ajax兴起.前端开发工作进一步划分:js开发和ui页面制作.另外从整个前端项目的清晰明朗以可扩展性角度来看,MVC的应用也越来越必要,特别是对大的项目. 例如 需要给一个页面上的button ...

  3. js 获取url中的查询字符串

    function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)( ...

  4. MFC程序实现窗口分割,视图快捷插入控件和插入列表

    将视图中插入列表: 1.创建一个MFC应用程序,在MFC Wizard中,生成的类选项,如图 2.选择CListView作为基类 3.在CXXView.cpp(XX为你的程序名)重写虚函数OnInit ...

  5. 对象创建型模式------Builder(生成器)

    本文系转载,转载地址http://blog.sina.com.cn/s/blog_59b6af690100zj3l.html,只供自己学习使用. 假设现在有三种产品,是玩具,都是由三部分组成,头,身体 ...

  6. 初试zabbix

    一.zabbix简介    zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.       zabbix由zabbix server与可选组件zabbix a ...

  7. Java的基础概念

    JDK (Java Development Kit) Java Developer Kit contains tools needed to develop the Java programs, an ...

  8. jquery load

    $('#loadFooter').click(function() { $('#footer').load('footer.html'); });

  9. cocos2d-x实战 C++卷 学习笔记--第4章 使用菜单

    前言: 菜单中包含菜单项,菜单项类是 MenuItem ,每个菜单项都有三个基本状态:正常.选中和禁止. (MenuItem)菜单分类: (文本菜单)MenuItemLabel : MenuItemA ...

  10. iOS开发——屏幕尺寸适配

    对于屏幕尺寸适配,目前先指竖屏的方式适合方式1和2. 1.控件尺寸写死的方式,偶尔会用到屏幕的宽度和高度. UILabel *holdLabel = [[UILabel alloc]initWithF ...