我们知道,main方法是程序的启动入口,但是main方法也是一个静态方法,如果直接调用会是什么情况,会不会导致内存堆栈溢出什么的,或者直接报错,学了三年Java还没有测试过,代码如下:
public class Test {
public static void main(String[] args) {
System.out.println("1");
Test.main(args);
}
}
运行结果如下:
如果线程请求的栈深度大于虚拟机所允许的深度将抛出StackOverflowError; 如果JVM Stack可以动态扩展,但是在尝试扩展时无法申请到足够的内存时抛出OutOfMemoryError。
果然栈溢出了。