Java中抛出的内存异常总结

来源:互联网 发布:ba无标度网络模型 编辑:程序博客网 时间:2024/06/05 14:11

Java中抛出的内存异常总结

根据上述的总结:可以整理出来,JVM在运行的时候大致会分为五个区域。方法区、堆区、本地方法栈、虚拟机栈、程序计数器。

其中程序计数器不会报出OutOfMemoryError错误,其他的都有可能会报出这个错误。

StackOverflowError:如果线程请求的栈深度大于虚拟机所允许的深度就会报这样的错误。

OutOfMemoryError:如果虚拟机栈可以动态扩展(当前大部分的java虚拟机都可以动态的扩展,只不过java虚拟机规范中也允许固定长度的虚拟机栈),如果扩展时无法申请到足够的内存,就会抛出OutOfMemoryError异常。

 

测试用例:

1:StackOverflowError错误

堆栈溢出错误一般是递归调用。


2OutOfMemoryError错误

下面的代码在运行时候会报出这样的错误。


         
0 0