问题描述
我想为Spring-Boot Web应用程序更改Java中的默认线程堆栈大小。我该如何更改?还是我需要使用哪个参数来更改此值?
第二个问题是,我可以在运行时以编程方式更改它吗?
解决方法
是的,您可以这样做。基本上,您可以在应用程序中配置线程的最大堆栈大小。
为此,您可以使用名为ss
的选项来调整最大堆栈大小。通常使用-X{option}
传递VM选项。因此,您可以使用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
,我想添加一些非常有用的资源:
默认值为每个线程1M,但是幸运的是情况还不错。操作系统延迟分配内存页,即在第一次使用时分配内存页,因此实际的内存使用量会低得多(每个线程堆栈通常为80-200 KB)。
在JDK 11/12中[最小线程堆栈大小]为:min_stack_size = 40 KB +(1 + 2 + 1 + 20)* 4 KB = 136 KB
如果我尝试设置一个较低的值,则可能会收到错误消息:
/usr/java/jdk-12.0.2/bin/java -Xss100k
指定的Java线程堆栈大小太小。指定至少136k