JAVA内存溢出
/** * 1.堆溢出 * 2.栈溢出 * 3.MetaSpace溢出 * 4.直接内存溢出 * 5.堆外内存溢出 */
1、栈溢出
设置每个线程的栈大小为 1m -Xss1m
public class OOMPrac {
private static void test(int index){
++index;
test(index);
}
public static void main(String[] args){
test(1);
}
}
输出:
Exception in thread "main" java.lang.StackOverflowError
at OOMPrac.test(OOMPrac.java:13)
at OOMPrac.test(OOMPrac.java:13)
at OOMPrac.test(OOMPrac.java:13)
at OOMPrac.test(OOMPrac.java:13)
2、堆溢出:
public class HeapOOMPrac {
public static void main(String[] args){
List<Object> alist = new ArrayList<>();
while (true){
alist.add(new byte[1024*1024]);
}
}
}
输出:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at HeapOOMPrac.main(HeapOOMPrac.java:18)
3、MetaSpace溢出
当我们指定了MaxMetaspaceSize,运行时不断加载类可能出现溢出。
4、堆外内存
美团的一篇文章: Netty堆外内存泄露排查盛宴
--------EOF---------
微信分享/微信扫码阅读
微信分享/微信扫码阅读