MATLAB Answers


Increasing Java Heap Memory of target machine so that EXE runs on target machine with MCR

Asked by Purnendu Nath on 26 Sep 2019
Latest activity Answered by Purnendu Nath on 27 Sep 2019
This helps with increasing Java Heap Memory on the developer machine
If I have a target machine that has only the MCR intalled... which hangs because of "" how do I increase the Java Heap Memory relevant for Matlab EXE on that machine? What should I tell the user on Windows 10 to do? Will increasing it using the "Control Panel - Programs - Java" be good enough? (i.e.
Or is there some way to specifically increase it for Matlab based EXE that run on the MCR?


Why do you want to increase the Java Heap Memory (which would decrease the memory available to matlab to store non-java stuff such as matrices)?
Because when my (appdesigner) app crashes after doing (say 1010) simulations for no apparent reason (e.g. if I restart it at 1009 it continues again) the red error message in the command window includes the following:
java.lang.OutOfMemoryError: Java heap space
In tha case, then indeed incresing the java heap may help. However, it would be interesting to find what is exhausting the java memory. appdesigner apps don't rely on java as far as I know.
If you can attach your app code, so we can look into it. Or raise a bug with Mathworks if your license allows it.

Sign in to comment.

2 Answers

Answer by Bruno Luong
on 26 Sep 2019
Edited by Bruno Luong
on 26 Sep 2019
 Accepted Answer

According to my test, the stand alone app uses the sames amount of java heap memory than your MATLAB preferences.
To set the amount of Java heap memory you can either uses the menu in the toolstrip
Menu Preferences -> General - Java Heap Memory
or edit the file prefernce file
>> edit(fullfile(prefdir,'matlab.prf'));
the put desired amount of the memory in Mb in the line (here 1Gb)
Then compile your app
On Windows platform if you want to change the Heap after compilation. Run the app once then close it. then goes the folder
where XXX is the user name, M.N, APPNAME depends on your MCR version and application name, edit the line
then relauch your app.


Having set it, is there a command line (or shell command) that I can use to inspect what value it has been set at without opening the .prf file? I would like to be able to click a button on my stand alone app and get a message that tells me what the JavaMemHeapMax setting is on machine running the stand alone app.
Use this (at the start of your application)
fprintf('Java memory = %d Mb\n', round(java.lang.Runtime.getRuntime.maxMemory/1e6));

Sign in to comment.

Answer by Purnendu Nath on 27 Sep 2019

Bruno, all of the above has worked perfectly...
Thanks a lot!


Sign in to comment.