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

20 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
> 除[[程序计数器]]外,其他都会发生该异常
## [[Java堆]]溢出
[[内存泄漏]]
通过工具产看泄露对象到GC Roots的引用链
[[内存溢出]]
Java heap space
内存中对象都是必须存活的
## [[虚拟机栈]]和[[本地方法栈]]溢出
请求栈深度超过虚拟机所允许的最大深度
栈允许动态扩展,扩展容量无法申请到足够内存抛出[[StackOverflowError]]
HotSpot栈容量无法动态扩展线程申请栈空间失败是抛出[[OutOfMemoryError]]
大多数情况下正常方法调用栈深度1000~2000是没有问题过多线程时内存溢出就需要减少最大堆和减少栈容量换取更多的线程
## [[方法区]]和[[运行时常量池]]溢出
JDK6运行时常量池溢出PermGen spaceString::intern()方法会将首次遇到的字符串实例复制到永久代的字符串常量池储存
JDK7字符串常量池已经移到堆中
JDK8取消永久代使用元空间
方法区溢出
## 本机[[直接内存]]溢出
Heap Dump文件中不会有明显的异常情况如果内存溢出后产生的Dump文件很小程序中直接或间接使用了DirectMemoryNIO可考虑检查直接内存