1. 产生的条件
1.1 线程请求的栈深度大于虚拟机允许的最大深度时,报StackOverflowError;
1.2虚拟机在扩展栈深度时,无法申请到足够的内存空间时,报OutOfMemoryError。
2. 示例
@Test
void stackOverflowTest(){
getName("hello");
}
private String getName(String name){
return getName(name);
}
显示
java.lang.StackOverflowError
at ...// 省略详细的报错信息
原因: 由于递归调用,栈深度已大于允许的最大深度。
Java栈溢出详解
本文详细解析了Java中栈溢出错误(StackOverflowError)的产生条件及示例。当线程请求的栈深度超过虚拟机允许的最大深度时,或者虚拟机在尝试扩展栈深度时无法获取足够内存时,将引发此类错误。通过一个无限递归调用的方法示例,展示了如何复现此错误。

551

被折叠的 条评论
为什么被折叠?



