您的位置:首页 > 其它

StackOverflowError和OutOfMemoryError产生原因汇总

2017-12-19 16:53 399 查看
1、线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError 异常

—| 递归可能造成StackOverflowError

—| 不断创建线程可能造成StackOverflowError

2、栈的深度(大小类似于弹夹深度)可以自动扩展,扩展时无法申请到足够的内存时会抛出OutOfMemoryError异常

3、虚拟机栈一样,本地方法栈区域也会抛出StackOverflowError 和OutOfMemoryError

异常。

4、如果在堆中没有内存完成实例分配,并且堆也无法再扩展时,将会抛出OutOfMemoryError 异常

5、当方法区无法满足内存分配需求时,将抛出OutOfMemoryError 异常。

6、当常量池(方法区的一部分)无法再申请到内存时会抛出OutOfMemoryError 异常

7、各个内存区域的总和大于物理内存限制(包括物理上的和操作系统级的限制),从而导致动态扩展时出现OutOfMemoryError异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息