Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting a heap memory above 4096MB on Karaf

I'm using a java application which requires a lot of memory, and I'd like to be able to set the maximum available memory for the JVM to a value above 4096MB, such as 8192MB.

I tried using the following parameter:

wrapper.java.maxmemory

which seems to work fine under the 4096MB threshold, but not above (it is stuck at something like 3.7GB or so).

I'm using a 64b JVM.

Where is the piece of code that prevents me from going above 4096MB?

like image 574
slebyc Avatar asked Oct 27 '25 03:10

slebyc


1 Answers

unfortunaly, the limit of wrapper.java.maxmemory is hardcoded in the version used in 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++;
}

You should use something like wrapper.java.additional.1 = -Xmx8196m

like image 101
Jérémie B Avatar answered Oct 29 '25 17:10

Jérémie B