How do I increase the heap space for the Java VM in MATLAB?

148 views (last 30 days)

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 22 Oct 2021
Edited: MathWorks Support Team on 8 Dec 2023
For MATLAB R2010a onwards:
You can change this setting using the Preferences dialog box. For more information, refer to the documentation page on 'Java Heap Memory Preferences'. This can be accessed as follows:
1. Open the help browser by typing at the MATLAB Command Window:
>> doc
2. Search for 'Java Heap Memory Preferences' on the search bar of this documentation browser.
For MATLAB R2009b and earlier:
You can increase the heap space for the Java Virtual machine (VM) by using the following file:
java.opts
Please follow the instructions below:
1. Create 'java.opts' file:
Create a text file named 'java.opts' in the $MATLABROOT/bin/$ARCH directory. $MATLABROOT
is the MATLAB root directory and $ARCH is your system architecture, which you find by typing at the MATLAB Command Window:\n
>> matlabroot
>> computer('arch')
If you do not have write-access to $MATLABROOT/bin/$ARCH, or if you want a user-specific version, create the 'java.opts' file in the MATLAB startup directory. The MATLAB startup directory can be found by executing the following at the MATLAB Command Window (before any MATLAB code is executed):\n
>> pwd
If you use MATLAB 7.7 (R2008b) or later versions on a MAC OS system, MATLAB default installation directory is
/Applications/MATLAB_<Release>.app
where '<Release>' is the MATLAB Release's version, i.e., R2008b, R2009a, etc. To access the contents of the /Applications/MATLAB_<Release>.app directory, in Finder, navigate to Applications and right-click on 'MATLAB_<Release>.app'. Click 'Show Package Contents' and you will be able to see the contents of the directory.
2. Determine the version of the Java Virtual Machine (JVM) in use:
The contents of 'java.opts' depend on your version of the JVM. To determine the version of the JVM you are running, type the following at the MATLAB Command Window:
>> version -java
NOTE: If you are performing these operations in MATLAB 7.5 (R2007b), read this bug report:
https://www.mathworks.com/support/bugreports/398525
3. Determine the value to put in the 'java.opts' file:
When MATLAB is launched, it starts up the Java Runtime Environment. MATLAB uses a set of default values for the initial and maximum heap size (managed by the heap manager). When the free memory nears zero, Java will dynamically increase the heap size (up to the Max Heap Size setting). The following table shows the default settings MATLAB uses for versions of the JVM:
JVM Initial Heap Size Max Heap Size
1.6.0 -Xms64m -Xmx128m (32-bit)
-Xmx196m (64-bit)
1.5.0 -Xms64m -Xmx96m (32-bit)
-Xmx128m (64-bit)
1.4.2 -Xms16m -Xmx96m
1.3.1 -Xms16000000 -Xmx64000000
1.2.2 -Xms16000000 -Xmx64000000
1.1.8 -ms16000000 -mx64000000
You can use the following commands to obtain information about the Java heap space usage in MATLAB:
>> java.lang.Runtime.getRuntime.maxMemory
>> java.lang.Runtime.getRuntime.totalMemory
>> java.lang.Runtime.getRuntime.freeMemory
Users can override these values by setting them manually in a 'java.opts' file. For example, including the following line in a 'java.opts' file sets the Max Heap Size value to 256 MB:
For JVM of 1.2.2 and later, place the following in your 'java.opts' file:
-Xmx256m
For JVM 1.1.8 'java.opts', place the following in your 'java.opts' file:
-mx256m
This will give you 256MB of JVM memory and you can adjust the parameter as needed. Remember that increasing the size of the Java heap may correspondingly decrease the amount of space available for MATLAB arrays. For more information, refer the following guide on Memory Management:
 
4. Troubleshooting:
In some cases, increasing the Java heap size above a certain limit can cause Java memory problems. See this solution for more information:
If you are increasing the Java heap size in response to an 'OutOfMemoryError: Java heap space', and you get the same error with the larger heap, you may have a memory leak, or you may be retaining references to Java objects beyond their usefulness. The Java SE Troubleshooting guide may help isolate the problem:
https://www.oracle.com/java/technologies/javase/webnotes.html

More Answers (1)

Igor Varfolomeev
Igor Varfolomeev on 19 Jun 2015
Although the Answer by MathWorks Support Team on 18 Oct 2013 is correct for old matlab versions, here's a cople of notes, concerning more recent versions:
-------
1. First of all, now "Max Java Heap Memory" parameter could be changed via a slider in Preferences->Matlab->General->Java Heap Memory
2. If the maximum value, allowed by this slider, is too small for your needs, (e.g. R2014b only allows me to set it to 49GB, while physically I have 192GB), it could be directly adjusted by editing
"c:\Users\%USERNAME%\AppData\Roaming\MathWorks\MATLAB\R2014b\matlab.prf"
3. Open it with a text editor and modify "JavaMemHeapMax" value. It should look like
JavaMemHeapMax=I190000
4. Restart Matlab
-------
Notes:
  • Since this preferences file is in your AppData folder, you even don't need administrative permissions (in contrast to adding "java.opts" to $MATLABROOT, as discussed in the mentioned answer.
  • To check the actual value, used by Matlab (in GB):
>> java.lang.Runtime.getRuntime.maxMemory/1e9
  • Preferences UI works OK with this new value (thanks, Mathwoks!). It just displays a warning, that it is larger, then recommended.
  4 Comments

Sign in to comment.

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!