如何使用JDK自带的jvisualvm监控java程序【Java HotSpot(TM)】

这篇文章仅针对HostSpot虚拟机

第一步,写一个测试的policy文件,命名为test.policy,指定可以访问tools.jar,内容如下:

grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission;};

第二步,编写一个测试程序TestJVisualVM.java:

import java.util.HashMap;import java.util.Map;/** *  * 测试jvisualvm的监控功能 * */public class TestJVisualVM {public static void main(String[] args) throws InterruptedException {// 模拟占用资源的部分for(int i = 0; i < 100; i++){Map<String, String> map = new HashMap<String, String>();map.put("" + i, "" + i);Thread t = new Thread(){public void run(){try {Thread.sleep(200 * 1000);} catch (InterruptedException e) {e.printStackTrace();}}};t.start();// sleep 1sThread.sleep(1000);}}}

第三步,编译:

javac -encoding utf8 TestJVisualVM.java

第四步,运行:

java -Djava.security.policy=test.policy -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote.port=10990 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false TestJVisualVM

第五步,配置jvisualvm

先添加远程主机,再添加远程JMX端口,端口要和启动文件中-Dcom.sun.management.jmxremote.port=10990指定的一致。

点击OK后双击,如果看到下图就说明配置正常了:

如果看到错误:

检查端口,如果显示0 :::10990

检查参数:-Djava.net.preferIPv4Stack=true

[ssergsw@JAZX5FVM-121-119 dubbo-antifraud]$ netstat -an | grep 10990tcp 0 0 :::10990 :::* LISTEN如果看到下面的监听,应该就能正常访问了:

[ssergsw@JAZX5FVM-121-119 dubbo-antifraud]$ netstat -an | grep 10990tcp 0 0 0.0.0.0:10990 0.0.0.0:* LISTEN

但没有一个创造奇迹的人是依靠瞬间的。

如何使用JDK自带的jvisualvm监控java程序【Java HotSpot(TM)】

相关文章:

你感兴趣的文章:

标签云: