Я запускаю программу ассимиляции данных в реальном времени, написанную в Matlab, и, похоже, происходит медленная утечка памяти. В течение примерно 16 дней среднее использование памяти увеличилось примерно на 40% (см. Рисунок ниже) примерно с 1,1 ГБ до 1,5 ГБ. Программа пеет каждые 15 минут, а пик в использовании памяти составляет около 30 секунд на этапе ассимиляции данных (см. Рисунок).Утечка памяти процессора Matlab за 16 дней
В конце каждого 15-минутного цикла, я экономлю имена, размеры и типы всех переменных в текущем активном рабочем пространстве в файл .mat с помощью функции whos
. Есть только более 100 переменных, и после запуска кода в течение примерно 16 дней нет четкой тенденции в объеме памяти, используемой любой из переменных.
Некоторые переменные очищаются в конце каждого цикла, но некоторые из них не являются. Я также звоню close all
, чтобы убедиться, что в памяти нет цифр, и я убедился, что когда я пишу ASCII-файлы, я всегда fclose(fileID)
файл.
Я в тупик ... Мне интересно, есть ли у кого-нибудь какие-либо предложения о том, что я должен искать, или инструменты, которые могли бы помочь выявить проблему. Заранее спасибо!
Редактировать, информацию о системе: RHEL 6.8 Matlab R2014b
Вы открываете и закрываете цифры в своем действительном коде?Я бы предложил повторно использовать существующие цифры (или, возможно, хотя бы тестирование без них). Результирующий код может быть быстрее, и я вспоминаю, что в прошлом это был источник проблем с памятью. – horchler
Кроме того, вы пробовали использовать профилирование (недокументированное профилирование памяти) Matlab (http://undocumentedmatlab.com/blog/undocumented-profiler-options)? – horchler
Вы пишете «чистый» матлаб? Или вы получаете доступ к файлам mex, библиотекам C или java-объектам из вашей установки Matlab. – John