У меня есть сценарий Matlab с интенсивной памятью. Что меня озадачивает, так это если я запустил этот код, он пропустит память на самой первой итерации (из 46 ожидаемых). Утечка в конце концов станет настолько большим, что это потребует заставляя Matlab бросить:Отладка Matlab позволяет избежать утечки памяти
Попытка найти точку утечки, я поставил точку останова на первой строке в цикле, но, как я ударил «Продолжить» выполнение выполнялось через первый цикл и снова останавливалось в точке останова и не вызывало утечки. Удаление точки останова и продолжение с этой точки вновь приводит к утечке. Использование точки останова для выполнения кода Один цикл в это время позволяет избежать утечки, и код не заканчивается без проблем (рис. 2).
Теперь я хотел бы:
1) понимают ли из-за чего-то я представил, или это может быть Matlab конкретный вопрос эта утечка,
2) получаю идея о том, как найти утечку (я не могу использовать отладчик, поскольку он устраняет проблему).
Я хотел бы предоставить код, но это довольно большой фрагмент (> 100 строк), поэтому мой вопрос касается общего подхода, чем фактическая отладка конкретной проблемы.
интересно, вы предварительно выделили свои матрицы перед циклом? Кроме того, что-либо в вашей петле становится больше с каждой итерацией? т. е. вектор, который растет с каждой итерацией по размеру? – GameOfThrows
Я предопределяю то, что могу, за пределами основного цикла. Существует вложенный цикл, и я предварительно распределяю его до основного цикла. Поэтому я переписываю первую матрицу, переопределяя ее как нули в каждом цикле. EDIT: забыл ответить на второй вопрос. Нет, на самом деле ничего не растет. – Alvin
, если на вашем ПК вы можете использовать функцию 'memory' и' whos', чтобы сделать какую-то старую печатную информацию на экране во время обычного (без отладки) исполнения, чтобы увидеть, можете ли вы «отладить» его. – matlabgui