public class TestSuper {
int a = 100;
void show(){
System.out.println("必死无疑");
};
public static void main(String[] args) {
Sub sub = new Sub();
sub.show();
}
}class Sub extends TestSuper{
public void show(){
int abc = super.a;
super.show();
this.show();
};
}必死Exception in thread "main" java.lang.StackOverflowError
at sun.nio.cs.ext.DoubleByteEncoder.encodeArrayLoop(Unknown Source)
at sun.nio.cs.ext.DoubleByteEncoder.encodeLoop(Unknown Source)
at java.nio.charset.CharsetEncoder.encode(Unknown Source)
at sun.nio.cs.StreamEncoder$CharsetSE.implWrite(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.BufferedWriter.flushBuffer(Unknown Source)
at java.io.PrintStream.write(Unknown Source)
at java.io.PrintStream.print(Unknown Source)
at java.io.PrintStream.println(Unknown Source)
at TestSuper.show(TestSuper.java:5)
at Sub.show(TestSuper.java:16)
at Sub.show(TestSuper.java:17)

解决方案 »

  1.   

    是因为造成了死循环,函数嵌套层过多,导致你的stack(java栈)益出了,就是局部变量已经超出了java栈的大小!
      

  2.   

    栈溢出问题
    super.show();
            this.show();
      

  3.   

    线程堆栈溢出,通过-Xss参数可以调整最大java线程堆栈大小,不过对你的这个没有用,因为你的是个无限递归。另外,程序设计中可能会遇到无线循环,但不会有无限递归。
      

  4.   

    这是一个 不会结束的嵌套调用,只有当java虚拟机的内存使用完了才会异常结束