在 Karaf 上将堆内存设置为 4096MB 以上

sle*_*byc 4 java jvm apache-karaf karaf

我正在使用需要大量内存的 java 应用程序,并且我希望能够将 JVM 的最大可用内存设置为高于 4096MB 的值,例如 8192MB。

我尝试使用以下参数:

wrapper.java.maxmemory
Run Code Online (Sandbox Code Playgroud)

这似乎在 4096MB 阈值下工作正常,但高于 4096MB 阈值则不然(它卡在 3.7GB 左右)。

我使用的是 64b JVM。

阻止我超过 4096MB 的代码在哪里?

Jér*_*e B 5

wrapper.java.maxmemory不幸的是, Karaf(wrapper.c,v3.2.3)中使用的版本中硬编码了的限制:

/* Maximum JVM memory */
maxMemory = getIntProperty(properties, "wrapper.java.maxmemory", 0);
if (maxMemory > 0) {
    maxMemory = __min(__max(maxMemory, initMemory), 4096);  /* initMemory <= n <= 4096 */
    if (strings) {
        strings[index] = malloc(sizeof(char) * (5 + 4 + 1));  /* Allow up to 4 digits. */
        sprintf(strings[index], "-Xmx%dm", maxMemory);
    }
    index++;
}
Run Code Online (Sandbox Code Playgroud)

你应该使用类似的东西wrapper.java.additional.1 = -Xmx8196m