我想在cloudfoundry java-buildpack中为我的java应用程序的内存设置进行更改。我试过这两种方式:
memory_calculator:
版本:3.8.0_RELEASE
repository_root: " {default.repository.root} /存储器计算器/ {平台} / {架构}" stack_threads:300
memory_sizes:
堆叠:2M
元空间:160M
堆:900M
但是,在部署我的应用时,这些都没有反映出来。我正在使用最新的java-buildpack。
答案 0 :(得分:1)
这取决于您正在使用的Java构建包的版本。
对于版本3.x,您可以设置一个env变量来配置内存计算器。喜欢这里。
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 } } }'
然后,它将覆盖构建包中默认的内存启发式配置,特别是堆和堆栈权重。
一些注意事项:
JBP_CONFIG_ORACLE_JRE
。该名称反映了config file path & name。cf set-env
,也可以在manifest.yml文件中设置env变量。两者都很好。在4.x版本中,JVM内存设置的配置变得更加简单。
但是,如果您认为您的应用程序不需要这些JVM默认值,那么现在可以使用JVM选项直接配置这些内存区域。
https://www.cloudfoundry.org/just-released-java-buildpack-4-0/
这意味着您仍然通过env变量配置JVM设置,但您只需设置JAVA_OPTS
并使用标准JVM配置选项。
例如:
cf set-env my-app JAVA_OPTS '-XX:ReservedCodeCacheSize=100M'
如果您愿意这样做而不是运行JAVA_OPTS
,则可以在manifest.yml中设置cf set-env
。
希望有所帮助!
答案 1 :(得分:0)
我有一个类似的问题-stackThreads的设置被忽略。我不清楚
我最终下载了source code for JBP-4,发现它确实仍然支持JBP_CONFIG_OPEN_JDK_JRE(只是不是JBP-3中假定的所有内存设置)。 Daniel Mikusa在44396432中提供了最有价值的建议
...使用Oracle JRE时,请使用JBP_CONFIG_ORACLE_JRE。
在“,”,[,{的所有排列中,这是有效的;
cf set-env APP_NAME JBP_CONFIG_ORACLE_JRE "{memory_calculator: {stack_threads: 202 } }"