メモリリークの改善は大変

2011/02/23

簡単なアプリならあまりハマる事はないと思うんですけど、 オブジェクトが増大するとメモリ管理が本当に大変です。

今作ってるアプリが、100ファイル以上あるので大ハマり! 現状iOSではretainCount方式しかないので自分の脳ではちょっと整理ができません(T_T) あとでいいや!とか半ば諦めていましたが、ついに糸口が見えてきました。

実機とInstrumentsの挙動が違う事がある

シミュレータやInstruentsで一見うまくいっているように見えても、実機で落ちる事があります。 これは環境の速度やタイミングの問題でしょうか? オブジェクトの定義ミス(getterやreleaseなど)を正確に処理してないことが原因が多かったです。

<a href="

実機でメモリ使用量の確認

自分は「iMemoryGraph」ってソフトで各画面で処理して確認しました。

はじめは、

特定の処理をする毎に5M消費

というループにハマって、あっという間に100Mを消費してしまいます。 iOS4はマルチタスク(バックグランド待機)なので、メモリは消費したままで解放できない。 これじゃぁ・・・とずっと悩んで、Instrumentsと睨めっこする日々。

とにかくInstrumentsと睨めっこ

だいたい自分のコーディングの問題なので、自分のアプリ名のタスクを探します。 iPhone で、よく増加するオブジェクトタイプを見つけて、メモリ解放されていないオブジェクトを発見します。

そして、どのセンテンスがどれくらい影響してるか?がおよその見当がつけられます。 iPhone

という事で、ちょっと出口が見えてきました!