【发布时间】:2019-05-24 17:25:38
【问题描述】:
我使用 spring-boot 2。如果我这样做:
导出_JAVA_OPTIONS=-Xmx756m
然后:
java -XX:+PrintFlagsFinal -version | grep -ie 'HeapSize|PermSize|ThreadStackSize'
intx CompilerThreadStackSize = 0 {pd product}
uintx ErgoHeapSizeLimit = 0 {product}
uintx HeapSizePerGCThread = 87241520 {product}
uintx InitialHeapSize := 16777216 {product}
uintx LargePageHeapSizeThreshold = 134217728 {product}
uintx MaxHeapSize := 792723456 {product}
intx ThreadStackSize = 1024 {pd product}
intx VMThreadStackSize = 1024 {pd product}
但是如果我重新加载控制台。 MaxHeapSize 被重置。
它什么也没改变:
java -XshowSettings:all
VM settings:
Max. Heap Size (Estimated): 237.81M
Ergonomics Machine Class: client
Using VM: OpenJDK 64-Bit Server VM
如果我这样做:
nohup java -Dspring.profiles.active=dev -Xmx660m -jar /home/ec2-user/project.jar >test.out 2>&1 &
在文本输出中:
nohup: ignoring input
VM settings:
Max. Heap Size: 660.00M
Ergonomics Machine Class: client
Using VM: OpenJDK 64-Bit Server VM
但是如果我手动输入java -XshowSettings:all 没有任何变化:
VM settings:
Max. Heap Size (Estimated): 237.81M
Ergonomics Machine Class: client
Using VM: OpenJDK 64-Bit Server VM
和:
uintx MaxHeapSize := 257949696 {product}
总内存:1gb
【问题讨论】:
-
"但是如果我重新加载控制台。MaxHeapSize 被重置。"当您“重新加载控制台”时,该环境变量是否仍然设置?您可能必须在一些启动或配置文件中设置它。
-
@Thilo 我必须在启动 jar 之前或之后导出 _JAVA_OPTIONS?
-
必须在启动 Java 程序时设置。您无法更改已在运行的 JVM 的这些设置。
标签: java linux amazon-ec2 jvm