java - cloudfoundry java buildpack 内存更改未反射(reflect)

标签 java cloud-foundry buildpack

我想在 cloudfoundry java-buildpack 中更改我的 java 应用程序的内存设置。我尝试过这两种方法:

  1. 在我的manifest.yml中使用JBP_CONFIG_OPEN_JDK_JRE参数。作为 建议在 https://github.com/cloudfoundry/java-buildpack-memory-calculator
  2. 在 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/

相关文章:

python - heroku django 未能检测到 set buildpack

python - 我的自定义 heroku python buildpack 在每次推送时下载需求

php - 在 Cloud Foundry 上部署开源 CMS 'my little forum'(需要 PHP 和 MySQL)

java - XSD 到 JAVA 到 XML

mysql - 使用新数据库来测试或创建模拟数据 Cloud Foundry 和 MySQL?

java - 什么是 LD_LIBRARY_PATH 以及如何使用它?

java - CloudFoundry 一般使用哪些电子邮件服务?

cloud - Pivotal Cloud Foundry 与 VMware Tanzu 应用服务

java - 是否可以使用 gradle 'application' 插件指定多个主类

java - 确保不同类型的泛型