首页 > 解决方案 > 在 Cloud Foundry 应用程序中覆盖堆内存配置

问题描述

我正在使用以下参数来覆盖我的 JVM 堆配置 -

JBP_CONFIG_OPEN_JDK_JRE: '[memory_calculator: {memory_heuristics: {heap: 65, metaspace: 20}}]'

但我无法看到这些变化得到反映。有人可以帮忙吗?

标签: heap-memorycloud-foundryswisscomdev

解决方案


您使用的选项仅适用于 Java buildpack 的 3.x 版。

从 Java buildpack 4 开始,您需要做的就是设置JAVA_OPTS您的 JVM 配置选项。因此,如果您想覆盖最大堆大小并更改线程堆栈大小,您可以执行cf set-env my-app JAVA_OPTS '-Xmx100m -Xss228k'.

Java buildpack 将读取这些值并尝试调整 JVM 使用的其他内存区域,以便它可以在定义的内存限制内运行您的应用程序。如果它不能这样做,Java buildpack 将打印一条错误消息告诉您这一点。

例如,如果您将内存限制设置为 512M,并且您将最大堆设置为 500M,那么这是行不通的。JVM 的其他区域将没有足够的内存,JBP 将拒绝您的设置。这是一项安全检查,以防止您的应用程序超出内存限制并在未来某个时间点崩溃。


推荐阅读