私はMatlabで書かれたリアルタイムデータ同化プログラムを実行していますが、メモリリークが遅いようです。約16日間にわたって、平均メモリ使用量は約1.1GBから約1.5GBまで約40%(下図参照)増加しています。プログラムは15分ごとにループし、データ同化ステップ中に約30秒間メモリ使用量にピークがあります(図に示されています)。各15分サイクルの終わりにMatlabプロセスメモリリーク16日以上
、私はwhos
機能を使用して.MATファイルに名前、サイズ、および現在アクティブなワークスペース内のすべての変数の型を保存しています。 100以上の変数があり、約16日間コードを実行した後は、いずれの変数でも使用されているメモリの量に明らかな傾向はありません。
一部の変数は各サイクルの終了時にクリアされますが、一部の変数はクリアされません。私もclose all
に電話をかけている人物がいないことを確認しています。私はASCIIファイルを書くときに必ずfclose(fileID)
というファイルを書きました。
私は困惑しています...私が探しているものや問題を追跡するのに役立つツールについての提案があれば、私は疑問に思っています。前もって感謝します!
編集、システム情報: RHEL 6.8 のMatlab R2014b
実際のコードで数字を開いたり閉じたりしていますか?代わりに既存の数字を再利用することをお勧めします。結果として得られるコードはより高速になるかもしれません。過去のメモリ問題の原因となっているこの種のことを思い出しています。 – horchler
また、Matlabプロファイラの[文書化されていないメモリプロファイリング](http://undocumentedmatlab.com/blog/undocumented-profiler-options)を試してみましたか? – horchler
あなたは "純粋な" matlabを書いていますか?または、あなたのMATLABインストールからmexファイル、Cライブラリ、またはJavaオブジェクトにアクセスしていますか? – John