我们的应用服务器OpenLiberty支持配置默认值和覆盖,定义见https://openliberty.io/docs/latest/reference/config/server-configuration-overview.html#jvm-options
选项按顺序读取并提供给JVM。如果您提供多个选项,那么它们都将被JVM看到。
目前,我们正在为我们的服务器设置一个初始的最小堆大小(通过config Dropins/default/jvm. option
)。我希望可以用JVM的默认值覆盖该最小堆大小(就好像从未指定过-Xms
一样)。
我确认我可以通过config Dropins/overrides向-Xms
传递一个新值,但我真正想做的是以某种方式覆盖初始设置,以便它采用JVM默认值(而不是不同的自定义值)。我尝试在覆盖中设置-Xms
(没有值),但它似乎只使用了来自config Dropins/default的值。
重复Java运行时选项中有一个很好的相关问题:首选顺序是什么?常见的JVM如何处理重复选项和选择,除了其中一个答案:
批处理文件中经常有深度嵌套的命令行,人们只能将其添加到末尾,并希望使其成为赢家。
这让我希望也许我不是唯一一个想要这个功能的人。有人知道是否已经有办法实现它了吗?
老实说,在容器中运行时,您不应该设置堆大小。由于Java8,通过UseContainerSupport
设置内置了支持,该设置会根据容器内存限制调整可用的堆大小。
如果您想微调,您可以使用-XX: MaxRAMPer的百分比/-XX:的设置。
这允许您以更动态的方式更改堆大小,而无需重建映像。
Update
基于https://www.ibm.com/docs/en/sdk-java-technology/8?topic=options-xxinitialrampercentage和-Xms等价:
-XX:InitialRAMPercentage=N Set initial heap size as a percentage of total memory
Note:
If you set a value for -Xms, the -XX:InitialRAMPercentage option is ignored.
If you set a value for -Xmx, the -XX:MaxRAMPercentage option is ignored.