当前位置: 首页 > 知识库问答 >
问题:

如何在灵活的GAE应用程序中正确设置JVM选项

白迪
2023-03-14

以下是GAE灵活Java8/Jetty应用程序的app.yaml文件。

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值。至少我不认为它被使用了,因为当我SSHdocker容器并运行以下命令时,内存值要少得多。

java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'

有人能告诉我发生了什么,或者我需要做些什么改变吗?

谢谢

共有1个答案

贺季
2023-03-14

该变量仅应用于作为docker容器入口点运行的Java进程。

JAVA_HEAP_OPTS 不是一个神奇的环境变量,它会自动全局应用于 docker 容器内任何随机执行的 Java。难怪为什么当你启动自己的、独立的 Java 进程时,你不会看到任何效果。

查看以下代码,您将了解其工作原理

    < Li > https://github . com/Google cloud platform/open JDK-runtime/blob/9-2018-02-28 _ 16 _ 02/open JDK-common/src/main/docker/docker-entry point . bash # L32 < Li > https://github . com/Google cloud platform/open JDK-runtime/blob/9-2018-02-28 _ 16 _ 02/open JDK-common/src/main/docker/setup-env . d/30-Java-env . bash # L38
 类似资料:
  • 问题内容: 我正在尝试运行Java程序,但是它采用默认的GMT时区而不是OS定义的时区。我的JDK版本是1.5,操作系统是Windows Server Enterprise(2007) Windows指定了中央时区,但是当我运行以下程序时,它给了我GMT时间。 这是输出 请注意,我不想从应用程序中设置时区。我希望JVM使用的时区应该是操作系统中指定的时区。(对于具有JDK 1.4版和Microso

  • 问题内容: 我有一个使用JPA持久性的jersey-2 / hk2应用程序。将在这样的约束启动 工厂级的 这可行,但是对于每个请求,我都会在日志中收到有关已注册EntityManager的警告: 我究竟做错了什么?在jersey-2 / hk2应用程序中初始化EntityManager的正确方法是什么? 问题答案: 一种选择是不是创建一个新的(这是在请求范围内),您可以创建为一个单独的工厂,然后就

  • 我有一个使用JPA持久性的jersey-2/hk2应用程序。启动时绑定如下所示

  • 问题内容: 我正在为我的游戏创建一个关卡编辑器,但在将LwjglCanvas与JFrame一起使用时遇到了问题。我使用JFrame(而不是LwjglFrame)来保持引擎和关卡编辑器尽可能独立。我有两个JAR:WorldEditor.jar和GameEngine.jar。在WorldEditor内部,我有一个名为“测试”的按钮,该按钮假设是将GameEngine.jar(如果尚未加载)加载并将其启

  • 我有两个关于Intellij IDEA中Gradle的问题 我知道退出按钮将优雅地关闭java应用程序 (文件)- 但我想知道如何通过gradle run优雅地关闭我的java应用程序? 因为gradle运行时没有退出按钮 (文件)- 另一个问题是如何通过编辑配置将java选项(如-Xmx选项)设置为java应用程序 虚拟机选项似乎设置了gradle虚拟机选项,而不是我的java应用程序选项。 非

  • 我一直在尝试将一个应用程序部署到Azure应用程序服务(免费层),由于内存限制,该应用程序不断被杀死,因为它使用了太多内存。当然,解决这一问题的最简单方法是在启动时在JVM上设置Xmx900m,但是我尝试的方法到目前为止都不起作用。 我所尝试的: 将Xmx900m添加到web。config(配置)httpPlatform标签,位于参数属性(开始处) 我可以在Azure App Service Ja