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. Java读取一个文件并打印到控制台上

    package test9; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundExcept ...

  2. 轻松学习Ionic (三) 安装sass并在webstorm中为scss添加watcher

    1. 安装Ruby 最新为 2.1.5版本,不放心的话安装 Ruby 1.9.3-p551    安装过程中注意勾选上第二项!即将Ruby加入到可执行的环境变量中去.       安装结束后在命令行中 ...

  3. PL/SQL在Oracle服务器上连接出错

    今天在Oracle服务器上使用PL/SQL连接Oracle软件的时候出现了错误,错误如下: 具体的解决办法如下: 需要下载32位的Oracle Client,具体的步骤如下:登录Oracle官方网站 ...

  4. Switch的表达式的要求

    在java中switch后的表达式的类型只能为以下几种:byte.short.char.int(在Java1.6中是这样),在java1.7后支持了对string的判断.

  5. 基于node/mongo的App Docker化测试环境搭建

    搭建步骤: 1.宿主机环境  ubuntu 14.4宿主机环境(云主机): 安装wget与curl(sudo apt-get install wget curl)2.安装Docker (wget -q ...

  6. oracle学习(1)

    1.安装完oracle数据库后,远程第一次无法登陆,需要进入sys用户后,更改以此后才有效. 2.TNS去读取配置的时候,如果在环境变量中已经配置了 TNS_ADMIN 后,则直接从此目录下读取. 3 ...

  7. @Transactional详解

    @Transactional     spring 事务注解 默认遇到throw new RuntimeException("...");会回滚需要捕获的throw new Exc ...

  8. nodejs的cs模式聊天客户端和服务器实现

    学习完nodejs的基础后,自然要写点东西练练手,以下是一个基于nodejs的cs模式的聊天软件代码: net模块是nodejs的网络编程必定用到的一个模块,对socket通信进行了封装 实现的功能: ...

  9. C++实现一个单例模板类

    单例模式在项目开发中使用得比较多,一个单例的模板类显得很有必要,避免每次都要重复定义一个单例类型 //非多线程模式下的一个单例模板类的实现 // template_singleton.h #inclu ...

  10. jquery 在页面中按回车 响应 事件

    为了用户方便我们往往会在用户回车之后做一些事,比如登陆的时候,填完表单过后,我们习惯性的会直接按回车,当然要处理这个,jquery是很简单的,我们来看看怎么做吧. $(document).ready( ...