在Karaf上设置堆内存超过4096MB

时间:2016-02-12 17:33:33

标签: java jvm apache-karaf karaf

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

我尝试使用以下参数:

wrapper.java.maxmemory

在4096MB阈值下似乎工作得很好,但不高于(它大约是3.7GB左右)。

我正在使用64b JVM。

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

1 个答案:

答案 0 :(得分:4)

不幸的是,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++;
}

您应该使用wrapper.java.additional.1 = -Xmx8196m

之类的内容