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

问题描述

我想为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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...