Управление памятью Matlab; недостаточная куча Java

1

Я надеялся, что кто-то здесь сможет объяснить или указать мне веб-страницу, где я мог бы узнать больше о управлении памятью Matlab. Я знаю, что Matlab - это язык более высокого уровня, поэтому он заботится об управлении памятью, что хорошо и плохо. Хорошая причина, мне не нужно беспокоиться об этом и плохой причине, я понятия не имею, что она делает под капотом. Причина, по которой я спрашиваю, в последнее время я получаю сообщение об ошибке.

Insufficient Java heap memory to continue operation 

Конечно, я использую 15-дюймовый MacBook Pro середины 2010 года с 4 ГБ ОЗУ, а не самый лучший компьютер для выполнения всех операций с изображениями, которые я делаю. Я знаю, что у Matlab есть функция удаления, и я не знал когда/если было бы полезно использовать эту функцию для сохранения памяти? Я использовал функцию удаления раньше только в связанных с оборудованием задачах, когда я отправляю данные через последовательный я удаляю свой серийный объект. Но помимо этого я должен использовать delete для моего собственное управление памятью?

Теги:
memory-management

2 ответа

2

См. Этот вопрос. Чтобы предотвратить ошибку кучи Java, вам нужно будет изменить параметры JVM. Измените значение по умолчанию в настройках Matlab или создайте новый файл java.opts с параметрами -Xmx (и опционально -Xms), например,

-Xmx1g
  • 0
    Эта ссылка на java.opts теперь гласит: Do not use a java.opts file in the following situations: [...] To adjust the Java heap size on desktop versions of MATLAB [...] . Смотрите мой ответ вместо.
0

Чтобы установить эквивалент параметра -Xmx в более поздних версиях Matlab, перейдите в -Xmx Настройки" (на панели инструментов/ленте), затем

MATLAB > General > Java Heap Memory

Там есть слайдер. Чтобы это вступило в силу, необходимо перезапустить Matlab.

Существует предупреждение об этом, но, как я писал в другом месте, я думаю, что его можно игнорировать.


В случае, если у вас есть только графический доступ к Matlab через терминал, эффект вышеупомянутой команды заключался в том, чтобы добавить следующую строку в ~/.matlab/R2016a/matlab.prf, чтобы вы могли сделать это вручную.

JavaMemHeapMax=I36532

Эта строка появилась после того, как я использовал слайдер, чтобы установить предпочтение 36 532 МБ и выйти из Matlab. Если вы не можете найти свой файл matlab.prf, проверьте здесь.

  • 0
    Какой бы метод ни использовался, чтобы убедиться, что он работает, введите в приглашении Matlab следующее: java.lang.Runtime.getRuntime().maxMemory() . Это даст вам число в байтах, которое должно быть аналогично указанному номеру -Xmx .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню