如何使用JDK自带的jvisualvm监控java程序【Java HotSpot(TM)】
这篇文章仅针对HostSpot虚拟机第一步,写一个测试的policy文件,命名为test.policy,指定可以访问tools.jar,内容如下:grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission;};第二步,编写一个测试程序Te
这篇文章仅针对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 1s
Thread.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 10990
tcp 0 0 :::10990 :::* LISTEN
如果看到下面的监听,应该就能正常访问了:
[ssergsw@JAZX5FVM-121-119 dubbo-antifraud]$ netstat -an | grep 10990
tcp 0 0 0.0.0.0:10990 0.0.0.0:* LISTEN
更多推荐
所有评论(0)