Я надеялся, что кто-то здесь сможет объяснить или указать мне веб-страницу, где я мог бы узнать больше о управлении памятью Matlab. Я знаю, что Matlab - это язык более высокого уровня, поэтому он заботится об управлении памятью, что хорошо и плохо. Хорошая причина, мне не нужно беспокоиться об этом и плохой причине, я понятия не имею, что она делает под капотом. Причина, по которой я спрашиваю, в последнее время я получаю сообщение об ошибке.
Insufficient Java heap memory to continue operation
Конечно, я использую 15-дюймовый MacBook Pro середины 2010 года с 4 ГБ ОЗУ, а не самый лучший компьютер для выполнения всех операций с изображениями, которые я делаю. Я знаю, что у Matlab есть функция удаления, и я не знал когда/если было бы полезно использовать эту функцию для сохранения памяти? Я использовал функцию удаления раньше только в связанных с оборудованием задачах, когда я отправляю данные через последовательный я удаляю свой серийный объект. Но помимо этого я должен использовать delete для моего собственное управление памятью?
См. Этот вопрос. Чтобы предотвратить ошибку кучи Java, вам нужно будет изменить параметры JVM. Измените значение по умолчанию в настройках Matlab или создайте новый файл java.opts
с параметрами -Xmx
(и опционально -Xms
), например,
-Xmx1g
Чтобы установить эквивалент параметра -Xmx
в более поздних версиях Matlab, перейдите в -Xmx
Настройки" (на панели инструментов/ленте), затем
MATLAB > General > Java Heap Memory
Там есть слайдер. Чтобы это вступило в силу, необходимо перезапустить Matlab.
Существует предупреждение об этом, но, как я писал в другом месте, я думаю, что его можно игнорировать.
В случае, если у вас есть только графический доступ к Matlab через терминал, эффект вышеупомянутой команды заключался в том, чтобы добавить следующую строку в ~/.matlab/R2016a/matlab.prf
, чтобы вы могли сделать это вручную.
JavaMemHeapMax=I36532
Эта строка появилась после того, как я использовал слайдер, чтобы установить предпочтение 36 532 МБ и выйти из Matlab. Если вы не можете найти свой файл matlab.prf
, проверьте здесь.
java.lang.Runtime.getRuntime().maxMemory()
. Это даст вам число в байтах, которое должно быть аналогично указанному номеру -Xmx
.
java.opts
теперь гласит:Do not use a java.opts file in the following situations: [...] To adjust the Java heap size on desktop versions of MATLAB [...]
. Смотрите мой ответ вместо.