学习笔记 --- JVM 堆溢出、栈溢出、永久代溢出、直接内存溢出

栈溢出(StackOverflowError)     

     ---    递归引起  栈空间不足

     ---   线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError

堆溢出(OutOfMemoryError:Java heap space)     

      ---  死循环,或者内存不够,创建对象时如果没有可以分配的堆内存

      ---   虚拟机在扩展栈深度时无法申请到足够的内存空间,将抛出OutOfMemberError

永久代溢出(OutOfMemoryError: PermGen space)

      ---  常量池溢出

      ---  方法区溢出

直接内存溢出

      ---  DirectMemory可以通过-XX:MaxDirectMemorySize指定,如果不指定,默认与Java堆的最大值(-Xmx指定)一样。

      ---   NIO会使用到直接内存

栈内存溢出:程序所要求的栈深度过大。 
堆内存溢出: 分清内存泄露还是 内存容量不足。泄露则看对象如何被 GC Root 引用,不足则通过调大-Xms,-Xmx参数。 
永久代溢出:Class对象未被释放,Class对象占用信息过多,有过多的Class对象。 
直接内存溢出:系统哪些地方会使用直接内存。
 

参考:写代码实现堆溢出、栈溢出、永久代溢出、直接内存溢出

https://blog.csdn.net/u011983531/article/details/63250882

猜你喜欢

转载自blog.csdn.net/tianyeshiye/article/details/84800345