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 ...// 省略详细的报错信息
原因: 由于递归调用,栈深度已大于允许的最大深度。