总结目的
- 通过代码验证java虚拟机运行时区域存储的内容;
- 工作中如果遇到内存溢出问题,能够根据反馈的异常信息快速判断哪个内存区域发生溢出
Java堆内存溢出
报错信息:java.lang.OutOfMemoryError:Java heap space
原因可能是内存泄漏或者创建太多对象导致内存不足
Java虚拟机栈和本地方法区栈
报错信息:
1.stackOverFlowError(栈的深度大于最大深度)
原因可能是方法递归调用过多
2.OutOfMemeoryError(扩展栈时无法申请到足够的内存)
原因可能是系统内存不足,无法创建新的线程
Metaspace内存溢出
报错信息:java.lang.OutOfMemoryError: Metaspace
原因可能是系统的代码非常多或引用的第三方包非常多或者通过动态代码生成类加载等方法
直接内存
报错信息:java.lang.OutOfMemoryError
解决办法
本文详细解析了Java虚拟机不同内存区域发生溢出的原因及常见错误信息,包括堆内存、虚拟机栈、本地方法栈、Metaspace和直接内存溢出情况,帮助开发者快速定位并解决问题。
1347

被折叠的 条评论
为什么被折叠?



