サーバレス練習帳

着眼大局着手小局

【delphi】メモリリーク

メモリリークを見つける方法は、
次の2つです。EurekaLogとFastMMです。
但し、FastMMはDelphi6以降に標準装備らしいですので、何かインポートしなくても使えるようです。

プロジェクトファイルのbegin直後に次の1行だけ追加して、アプリを動かして終了してみたところ・・・。

ReportMemoryLeaksOnShutdown := True;

f:id:urbanplanner:20190120105427p:plain

上の方に表示される細々としたやつはともかくとして、下の方にある4396という数値が時間とともに増え続けているのがヤバい感じがしました。スレッド内に解放できていない何がかあるな。。。
ちなみに、起動直後のメモリリークは、こんな感じ。
f:id:urbanplanner:20190120105808p:plain

@@@

・・・そして、修正しました。
f:id:urbanplanner:20190120110222p:plain
ジェネリクス配列で1秒毎にcreateしているのに、freeしていないやつがスレッドの無限ループ内に2つも見つかりました。これにfree処理を追加したところ、収まりました。。。良かった。。。

≪参考≫
こちらはEurekaLogです。30日間無料っぽい。
www.gesource.jp

そして、こちらがFastMMです。
mrxray.on.coocan.jp