gsh6022 2020-07-30 19:11 采纳率: 100%
浏览 186
已采纳

JVM堆内存溢出问题,对于同一段代码只是打印了一下长度

求有智慧的大佬回答一下此问题
划重点,我问的是上面的代码为什么不OOM!!!

private static void testOldHeap2() {
        List<String> list = new ArrayList<String>();
        String s = "ssa";
        list.add(s);
        while(true){
            list.add(s);
            System.out.println(list.size());
        }

    }

此片段代码不会内存溢出,jdk版本1.8


private static void testOldHeap2() {
        List<String> list = new ArrayList<String>();
        String s = "ssa";
        list.add(s);
        while(true){
            System.out.println(list.size());
        }

    }

这段代码大概20s不到就会抛出内存溢出,很奇怪,我想不明白为什么
此为内存溢出截图

  • 写回答

3条回答 默认 最新

  • 牧子与羊 2020-07-31 09:26
    关注

    我这么给你说吧,做print打印的时候需要消耗时间,也就是假定list的size达到100w会溢出,那么打印花费时间需要60s,不打印需要0.5s,也就是你说的为什么没打印20s就溢出了。我们可以做个验证
    图片说明,你把内存(-Xmx10m)设置小一点,很快就能验证我的说法。望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#stm32#的问题:第一张图是发送数据代码,第二第三张图是接收数据并进行DAC转换的函数,若用串口一接收数据并进行DAC转换,主函数代码该怎么写
  • ¥20 hc130怎么读写内部flash存储信息
  • ¥15 Axure rp9注册与登录交互
  • ¥15 我下载图形界面重启完就变成这样了,打字也打不了,动也动不了,该怎么解决(操作系统-centos)
  • ¥15 VBA中在窗体中遍历所有checkbox控件,提取出被选中的checkbox的caption值
  • ¥15 在Ubuntu上有什么命令,或者是系统文件能告诉我链接nvme ssd的pcie槽位是不是支持热插拔功能?
  • ¥15 ansys license许可证问题
  • ¥20 QQ号和密码都能正常登录微信 QQ号和密码登录微信显示密码错误
  • ¥15 单片机RTOS Kernel与应用分离开发,Kernel如何调起应用?
  • ¥15 快手小店商家版APP怎么第三方APP跳转到指定用户聊天界面