zoukankan      html  css  js  c++  java
  • Jconsole观察java程序

    JConsole是JDK自带的调试程序,位于jDK的bin目录下:jdk1.8.0_73in
    JDK的bin目录下还提供了其他小巧的工具,如:jps.exe jhat.exe,jhat.exe jmap.exe等工具
    在window上双击显示如下:

    image

    在本地启动一个程序:JConsole进入

    image

    但是显示异常:连接失败,是否重试

    image

    想要使用Jconsole实现监控必须添加以下参数:(重要)
    -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=3210 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

    127.0.0.1是主机IP,如果是远程主机就填写远程主机ip
    3210:端口,未被占用就行
    在Eclipse添加虚拟机参数:

    右击:选择Run Configurations
    image

    选择主类

    image

    添加参数

    image

    重新建立连接:

    image

    点击“不安全连接”后键入监控平台:

    image
    内存区、非内存区监控
    image

    测试代码:

    public class OutOfMemoryErrorTest {
    	static class OObject{}
    	private static List <OObject> list = new ArrayList<OObject>();
    	public static void main(String[] args) throws InterruptedException {
    		while (true) {
    		    Thread.sleep(100);
    			System.out.println("1111111111111");
    		     list.add(new OObject());
    		}
    	}
    }
    

    点击执行GC:观察PS Eden Space(新生代) 和 old Gen(老年代)内存关系:

    执行GC,新生代内存被回收,对象进入老年代,对象未被真正清理。

    image
    老年代:
    image

    代码中不断加入到list集合中,即对象被引用,无法被收集器标记“死亡”,也就不会被垃圾收集器清理,随着每次gc,对象“年龄”增长,由新生代进入老年代,随着时间增加,会造成内存溢出

  • 相关阅读:
    大佬讲话听后感
    P1226快速幂取余
    对拍
    P1017 进制转换
    P1092 虫食算 NOIP2002
    P1003 铺地毯
    P1443 马的遍历
    P1032 字串变换
    P1379 八数码问题
    2-MAVEN 基本命令
  • 原文地址:https://www.cnblogs.com/ldd525/p/14839352.html
Copyright © 2011-2022 走看看