如何微调 JVM 配置以减少最大线程堆栈大小?

How to fine tune JVM configurations to reduce the max thread stack size?

我想为 Spring-Boot Web 应用程序更改 Java 中的默认线程堆栈大小。我怎样才能改变这个?或者我需要使用哪个参数来更改此值?

此外,第二个问题是,我可以在运行时以编程方式更改它吗?

是的,你可以做到。基本上,您可以在应用程序中配置线程的最大堆栈大小。

为此,您可以使用名为 ss 的选项来调整最大堆栈大小。 VM 选项通常使用 -X{option} 传递。所以你可以使用 java -Xss1M 将堆栈大小的最大值设置为 1M.

另一个示例是 java -Xss1048576,这会将最大线程大小设置为大约 1 MB

还可以查看以下两个博客以获取更多信息和其他标志。

-> https://www.baeldung.com/jvm-configure-stack-sizes

-> https://docs.gigaspaces.com/latest/production/production-jvm-tuning.html

我想添加一些非常有用的资源:

The default is 1M per thread, but fortunately the things are not so bad. OS allocates memory pages lazily, i.e. on the first use, so the actual memory usage will be much lower (typically 80-200 KB per thread stack).

in JDK 11/12 [minimum thread stack size] is: min_stack_size = 40 KB + (1 + 2 + 1 + 20) * 4 KB = 136 KB

If I try to set a lower value, I’ll expectedly get an error:

/usr/java/jdk-12.0.2/bin/java -Xss100k

The Java thread stack size specified is too small. Specify at least 136k