На самом деле, вы можете уменьшить пространство кучи Java. Память в вашем процессе, по крайней мере в обычном Matlab, разделена между Matlab и Java. Если вы увеличите размер кучи Java, вы соответственно уменьшите объем памяти, доступной для массивов Matlab. Массивы Matlab живут в обычной памяти в стиле C, а не в памяти Java GCed.
Я предполагаю, что ваше Java-приложение, в которое загружается библиотека, встроенная в javabuilder, настроено так, чтобы иметь большую кучу Java, чем Matlab IDE. Matlab начинается с небольшой кучи Java. Вот как это отобразить из Matlab.
function show_javamemory()
rt = java.lang.Runtime.getRuntime();
M = 2^20;
disp(sprintf('Java heap: %d M total, %d M max, %d M free',...
round(rt.totalMemory()/M), round(rt.maxMemory()/M), round(rt.freeMemory()/M)));
В моем R2009a я вижу это.
>> show_javamemory()
Java heap: 62 M total, 125 M max, 28 M free
Этот файл java.opts в% matlabroot% / bin / win32 контролирует JVM, встроенную в Matlab, когда он запускается как IDE. Я не думаю, что это повлияет на приложения, которые загружаются в вашей библиотеке, собранной javabuilder. Они должны быть скорректированы путем передачи параметров в любую вызывающую их командную строку Java.
Попробуйте запустить show_javamemory () из вашего скомпилированного приложения, чтобы увидеть, как настроена его куча (и повлияло ли изменение java.opts), а затем настроить ее параметры Java для уменьшения кучи.