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