您的位置:首页 > 编程语言 > Java开发

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

2013-08-12 20:23 791 查看
这篇文章仅针对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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: