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