zoukankan      html  css  js  c++  java
  • java监视和管理控制台 jconsole

    jconsole.exe  是java自带的一个可用来监控内存,线程等信息的可视化小工具

    在java安装bin目录下

    写个小程序,来玩一下这个程序,主要看堆内存变化情况

    public class JconsoleTest {
     
        //定义b1是为了增大类的占用空间,使jconsole的视图变化更明显,这里定义的是128kb
     
        //情况一:
        byte[] b1 = new byte[128 * 1024];
     
        //情况二:
    //    public JconsoleTest() {
    //        byte[] b1 = new byte[128 * 1024];
    //    }
     
        public static void main(String[] args) {
     
            try {
                //为了在程序执行开始前,有时间打开 jconsole
                Thread.sleep(8000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            fun(1000);
        }
     
        private static void fun(int n) {
     
            List<JconsoleTest> jList = new ArrayList<JconsoleTest>();
     
            for (int i = 0; i < n; i++) {
                try {
                    //程序慢点跑,否则还没打开jconsole,就结束了
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                jList.add(new JconsoleTest());
            }
        }
    }

    首先情况一时,由于b1定义在成员变量将会长期存在,所以可以看见 jconsole上表现出来的堆内存使用量是持续增长的

     

    再看情况二,将b1定义到构造方法中,他变成了局部变量,局部变量中引用数据类型,引用存在栈中,实例存在堆中。随着构造方法的结束,引用弹栈,堆中的对象会更快被回收(如果这个变量没有人引用)

     

    VM概要信息

     

    实际场景中可以通过这个监控软件,来对应用程序进行一些针对性的问题分析,通过经验判断出问题所在

  • 相关阅读:
    android ImageSwitcher
    andriod Spinner
    andriod RadioButton
    anriod TabHost
    给大学生的几条良心建议
    6月最新地铁站周边二手房价格出炉
    机器学习 101 Mahout 简介 建立一个推荐引擎 使用 Mahout 实现集群 使用 Mahout 实现内容分类 结束语 下载资源
    Vim设置colorscheme小技巧
    2017年阳光私募基金一季度报告
    实用的 atom 插件
  • 原文地址:https://www.cnblogs.com/penglu/p/12869190.html
Copyright © 2011-2022 走看看