在一个类里new class(当然不是在构造函数里面调用自己的构造函数),就报Exception in thread "main" java.lang.StackOverflowError ,把这个new class删掉就好了,为什么呢?

解决方案 »

  1.   

    for example,可能你的例子有类似的代码public class Test1 {
    int a;
    public Test1(){
    this.a++;
    new Test1();
    }
    public static void main(String[] args) {
    Test1 test = new Test1();
    }}
      

  2.   

    99%的可能是递归调用不当引起的,超过JVM最大栈深度
      

  3.   

    “如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常;如果虚拟机栈可以动态扩展(当前大部分的Java虚拟机都可动态扩展,只不过Java虚拟机规范中也允许固定长度的虚拟机栈),当扩展时无法申请到足够的内存时会抛出OutOfMemoryError异常...”
      

  4.   

    问题找到了,由于代码比较多,没看清楚,有两个函数进行了相互调用,结果造成了堆栈溢出。朋友们的提示对我很有帮助,在此向各位表示感谢
    例如:
    public class test {
    public void test1(){
    test2();
    }

    public void test2(){
    test1();
    }
    public static void main(String[]args){
    test te=new test();
    te.test1();
    }}