java.lang.StackOverFlowError, java.lang.OutOfMemory 属于Error
java.lang.OutOfMemoryError:GC overhead limit exceedec
:
GC回收时间过长。超过98%的时间用来做GC并且回收了不到2%的堆内存,连续多次GC都只回收了不到2%的极端情况下才会抛出,假如不抛出GC overhead limit 错误会发生什么情况呢?那就是GC清理的这么点内存很快会再次填满,迫使GC再次执行,这样就形成恶性循环,CPU使用率一直是100%,而GC却没有任何成果
public class OOMDemo {
public static void main(String[] args) {
}
@Test
public void overHeadLimit() {
List list = new ArrayList();
int i = 0;
try {
while (true) {
list.add(new String("" + (++i)).intern());
}
} catch (Exception e) {
e