Why are JVMs limited to an 800MB heap size?
The 31-bit versions of WebSphere Application Server (see the tables in this article) run in 31-bit mode. When the JVM starts, it requests a big chunk of memory from Linux to use for the JVM heap. The 31-bit programs can address only up to 2GB of memory. Linux detects that the JVM is a 31-bit program, and Linux has rules for how much memory it allows any single program obtain. According to those rules, the maximum amount of memory any single 31-bit program can obtain is about 800MB. Whether 64-bit or 31-bit, Linux applies these same rules to determine how much memory the JVM can obtain. Starting the JVM with a maximum JVM heap larger than 800MB results in a memory allocation failure because Linux refuses to give the JVM that much memory. However, you can bend Linuxâ s rules by changing the mapped_base setting in Suse Linux Enterprise Server ( mapped_base is not supported in RedHat distributions). Using this procedure, you can raise the JVM maximum heap size to between 1100MB and 1200MB.
Related Questions
- What option can be specified as an argument to the jdk to increase the thread heap size used by the JDK in the context of the webserver?
- Does someone who is reviewing a producing manager under the limited size and resources exception have to be a principal?
- What is the recommended Maximum Heap size setting for the jdk?