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());

}

}

此片段代码不会内存溢出" title="内存溢出">内存溢出,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不到就会抛出内存溢出,很奇怪,我想不明白为什么
此为内存溢出截图

回答

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

以上是 JVM堆内存溢出问题,对于同一段代码只是打印了一下长度 的全部内容, 来源链接: utcz.com/a/36623.html

回到顶部