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,对象“年龄”增长,由新生代进入老年代,随着时间增加,会造成内存溢出

  • 相关阅读:
    字体辉光效果
    C# 读写 Photoshop PSD文件 操作类
    SQL Server日期时间格式转换字符串详解
    用DataTable填充实体类List
    C#控件的闪烁问题解决方法总结
    .NET Framework的属性类对控件的支持功能
    Aspose破解版本dll
    整理的C#屏幕截图,控件截图程序
    C#绘制渐变背景
    VS2010编译的时候出现fatal error LNK1146: 没有用选项“/out:”指定的参数
  • 原文地址:https://www.cnblogs.com/ldd525/p/14839352.html
Copyright © 2011-2022 走看看