这篇文章仅针对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



Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐