public class CodeBlockDemo {
static CodeBlockDemo cbd;
CodeBlockDemo scb = new CodeBlockDemo();
static {
cbd = new CodeBlockDemo();
int a = 1;
System.out.println("hot");
System.out.println(a);
}
CodeBlockDemo(){
System.out.println("构造器");
}
public static void main(String[] args) {
int[] a = new int[] {1,2,3,4};
Object b =a;
Object m = new int[] {2,3,4};
Object[] element = new Integer[] {2,3,4};
Object[] arr = {};
}
}
new死循环了,自己内部new自己,出不来了
是指待定调用太多导致执行堆栈溢 ,自己new自己导致循环调用 ,建议学习下单例写法
在类中实例化自己了,一直循环导致堆栈溢出。
如 public class A{ A a = new A();}
A a 是声明,创建了一个A类型的变量a。
new A()
即是实例化,实实在在地在内存里为A()划分了一块内存空间,
当你实例化的时候,就不断的在给A分配存储空间,直到堆栈溢出了。
可以public class A{
A a=null;
}
自己重复new自己导致死循环
自己new死循环了,不断重复
CodeBlockDemo scb = new CodeBlockDemo();
cbd = new CodeBlockDemo();
这两行代码造成了死循环,注释掉一个就可以了
如楼上所说,你的方法不停的入栈,导致内存占用速度远远大于你的JVM的垃圾回收速度。
所以会导致栈溢出异常。
你的方法不停的入栈,导致内存占用速度远远大于你的JVM的垃圾回收速度。
所以会导致栈溢出异常。