以下是我的 app.yaml 文件,用于 GAE flexible Java 8/Jetty 应用程序。
runtime: java
env: flex
manual_scaling:
instances: 1
runtime_config: # Optional
jdk: openjdk8
server: jetty9
resources:
cpu: 2
memory_gb: 4.0
env_variables:
JAVA_HEAP_OPTS: -Xms3072M -Xmx3072M
health_check:
enable_health_check: False
handlers:
- url: /.*
script: this field is required, but ignored
由于某些原因,在部署应用程序时未使用 JAVA_HEAP_OPTS 值。至少我认为它没有被使用,因为当我通过 SSH 进入 docker 容器并运行以下命令时,内存值要少得多。
java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
有人可以告诉我发生了什么事或者我需要做哪些不同的事情吗?
谢谢
最佳答案
该变量仅应用于作为 docker 容器入口点运行的 Java 进程。
JAVA_HEAP_OPTS
不是一个神奇的环境变量,它会自动和全局地应用于 docker 容器内 Java 的任何随机执行。难怪为什么在启动自己的独立 Java 进程时看不到任何效果。
看看下面的代码,你就会明白它是如何工作的:
关于java - 如何在灵活的 GAE 应用程序中正确设置 JVM 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49620058/