Java堆溢出
1 |
|
异常堆栈信息:
1 | java.lang.OutOfMemoryError Java heap space |
首先要确认是内存泄漏(Memory Leak)还是内存溢出(Memory Overflow)
如果是内存泄漏
可以通过工具查看泄漏对象到GC Roots的引用链,定位到泄漏代码的位置。
如果是内存溢出
检查虚拟机的堆参数(-Xmx与-Xms),与机器物理内存对比看是否可以调大,从代码上检查是否存在某些对象生命周期过长、持有状态时间过长的情况,尝试减少程序运行期间的内存消耗。
虚拟机栈和本地方法栈溢出
如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常。
如果虚拟机在扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常。``