一个关于内存使用变化规律的猜想与验证

本文探讨了JConsole中内存使用呈现规律性锯齿状变化的原因,通过实验验证,确认这种现象与JMX操作相关,而非代码本身。JConsole通过JMX收集数据,每个齿状变化对应于数据收集周期,进一步研究发现调整JConsole数据收集间隔会影响这种波动的频率。
摘要由CSDN通过智能技术生成

     JConsole是JDK里面自带的一个工具,可以监控CPU,内存和线程等动态数据。当我们刚开始学习JConsole时,经常会发现我们监控的程序里内存使用块始终保持着变化,而且是有规律的锯齿状。就算我们坚信程序在这段时间没有任何的操作,停止在阻塞状态下,这个齿状的线条依旧。打开JConsole的相关文档,里面没谈到这点,而它上面举的例子也是一个个锯齿状的线条。这个线条举例如下:



为了测试,写一段程序代码如下:
    public static void main(String[] args) throws IOException
    {
        int size = 10;
        if( args.length > 0)
            size = Integer.parseInt(args[0]);
       
        byte[] bytes =new byte[1024*1024*size];
        System.out.println( bytes.length );
        System.in.read();
       
    }

命令为java -Dcom.sun.management.jmxremote MemTest。

当程序不带参数时,它申请一个大约10M的内存空间,然后阻塞在IO上等用户输入。在JConsole的内存监控图形上,切换到具体的内存块上,我们可以看到,这10M的内存分配到旧生代上,而齿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值