java.lang.StackOverflowError Java栈溢出异常:
Exception in thread "main" java.lang.StackOverflowError
at custom.demo4.Demo4.funA(Demo4.java:6)
at custom.demo4.Demo4.funA(Demo4.java:6)
at custom.demo4.Demo4.funA(Demo4.java:6)
at custom.demo4.Demo4.funA(Demo4.java:6)
at custom.demo4.Demo4.funA(Demo4.java:6)
原因:java方法栈的内存耗尽了就会抛出StackOverflowError,多半是程序里有无限递归调用导致的,当然也存在就只是方法栈调用太深的可能,但是java方法栈只是保存了一些很小的数据,比如:局部变量表、操作数栈、动态链接、方法出口等信息,想要耗尽栈内存并不容易,如果真是这样那也就只能增加栈的大小了, -XX:MaxDirectMemorySize=128,默认是64M。
/**
* 无限递归导致栈溢出示例
*/
public class Demo4 {
public static void funA(){
funA();
}
public static void main(String[] args) {
funA();
}
}