Files
Hui-s-notebook/OutOfMemoryError.md
2023-09-10 10:50:53 +08:00

1.2 KiB
Raw Permalink Blame History

程序计数器外,其他都会发生该异常

Java堆溢出

内存泄漏 通过工具产看泄露对象到GC Roots的引用链 内存溢出 Java heap space 内存中对象都是必须存活的

虚拟机栈本地方法栈溢出

请求栈深度超过虚拟机所允许的最大深度 栈允许动态扩展,扩展容量无法申请到足够内存抛出StackOverflowError HotSpot栈容量无法动态扩展线程申请栈空间失败是抛出OutOfMemoryError 大多数情况下正常方法调用栈深度1000~2000是没有问题过多线程时内存溢出就需要减少最大堆和减少栈容量换取更多的线程

方法区运行时常量池溢出

JDK6运行时常量池溢出PermGen spaceString::intern()方法会将首次遇到的字符串实例复制到永久代的字符串常量池储存 JDK7字符串常量池已经移到堆中 JDK8取消永久代使用元空间 方法区溢出

本机直接内存溢出

Heap Dump文件中不会有明显的异常情况如果内存溢出后产生的Dump文件很小程序中直接或间接使用了DirectMemoryNIO可考虑检查直接内存