我想在 cloudfoundry java-buildpack 中更改我的 java 应用程序的内存设置。我尝试过这两种方法:
- 在我的manifest.yml中使用JBP_CONFIG_OPEN_JDK_JRE参数。作为 建议在 https://github.com/cloudfoundry/java-buildpack-memory-calculator
- 在 config\open_jdk_jre.yml 中进行此更改:
memory_calculator:
version: 3.8.0_RELEASE
repository_root: "{default.repository.root}/memory-calculator/{platform}/{architecture}" stack_threads: 300
memory_sizes:
stack: 2M
metaspace: 160M
heap: 900M
但是,在部署我的应用程序时,这些都没有得到反射(reflect)。我正在使用最新的 java-buildpack。
最佳答案
这取决于您正在使用的 Java 构建包的版本。
版本 3.x
对于 3.x 版本,您可以设置一个环境变量来配置内存计算器。就像这里一样。
https://github.com/cloudfoundry/java-buildpack/tree/3.x#configuration-and-extension
例如:
cf set-env my-application JBP_CONFIG_OPEN_JDK_JRE '{ memory_calculator: { memory_heuristics: { heap: 85, stack: 10 } } }'
这将覆盖构建包中默认的内存启发式配置,特别是堆和堆栈权重。
一些注意事项:
- 了解不同内存配置选项的作用是另一回事。您可以阅读这些 here .
- 这仅适用于 OpenJDK,如果您使用不同的 JDK,则配置选项会略有不同。例如:Oracle 的
JBP_CONFIG_ORACLE_JRE
。该名称反射(reflect)了 config file path & name . - 如何为应用程序设置环境变量并不重要。您可以像上面一样使用 cf set-env ,也可以在 manifest.yml 文件中设置 env 变量。两者都工作得很好。
版本 4.x
在 4.x 版本中,JVM 内存设置的配置变得更加简单。
however if you believe that your application doesn’t need these JVM defaults, you can now configure those memory regions directly with JVM options.
https://www.cloudfoundry.org/just-released-java-buildpack-4-0/
这意味着您仍然通过环境变量配置 JVM 设置,但您只需要设置 JAVA_OPTS
并使用标准 JVM 配置选项。
例如:
cf set-env my-app JAVA_OPTS '-XX:ReservedCodeCacheSize=100M'
如果您更喜欢这样做而不是运行 cf set-env
,则可以在 Manifest.yml 中设置 JAVA_OPTS
。
希望有帮助!
关于java - cloudfoundry java buildpack 内存更改未反射(reflect),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44396432/