JDK 线程构造函数 StackSize 是什么意思?

What Does JDK Thread Constructor StackSize means?

我设置Thread stackSize=1,然后调用三个方法。在我看来,方法栈是3个或更多。但为什么不发生 Whosebug Exception?这是我的代码:

public class ExecutorsTest {
private static void printOne() {
    System.out.println("do Print One");
    printTwo();
}
private static void printTwo() {
    System.out.println("do Print Two");
    printThree();
}
private static void printThree() {
    System.out.println("do Print Three");
}
public static void main(String[] args) throws Exception {
    ThreadGroup group = new ThreadGroup("thread-Group");
    Thread thread = new Thread(group, ()-> {
        printOne();
    },"myThread",1);
    thread.start();
}

}

每个 Java 虚拟机线程都有一个私有的 Java 虚拟机堆栈,与线程同时创建。

A Java 虚拟机堆栈存储帧。堆栈保存局部变量和部分结果,并在方法调用和 return.

中发挥作用

堆栈大小 是虚拟机为此分配的地址 space 的近似 字节数线程的堆栈。

The effect of the stackSize parameter, if any, is highly platform dependent.

在某些平台上,为 stackSize 参数指定更高的值可能允许线程在抛出 WhosebugError 之前实现更大的递归深度。

同样,指定一个较低的值可能允许更多线程并发存在而不会抛出 OutOfMemoryError(或其他内部错误)。

stackSize 参数的值与最大递归深度和并发级别之间关系的详细信息取决于平台。

在某些平台上,stackSize 参数的值可能没有任何效果。