App Store 向けのアプリを開発していますが、メモリ管理に奇妙な問題があります。
ARCを使用しています。
インスツルメントに接続されたunjailbroken iPod touch 4G 6.0.1でアプリをテストすると、すべてうまくいくように見えます。アプリは常に 5 MB 未満のメモリを使用し、リークはありません。ただし、長時間使用した後、5Mb 未満の計測器で監視されているにもかかわらず、メモリの警告が表示され始め、最終的にOS によって強制終了されます。バックグラウンドで開いているアプリがないので、アプリが追跡できないメモリリークを起こしていると想定しています。どうすればいいの?
さらに、具体的には、メモリ使用量を追跡する関数の使用を開始しました。
struct task_basic_info info;
mach_msg_type_number_t size = sizeof(info);
kern_return_t kerr = task_info(mach_task_self(),
TASK_BASIC_INFO,
(task_info_t)&info,
&size);
if( kerr == KERN_SUCCESS ) {
return info.resident_size/1024.0/1024.0;
} else {
return -1.0;
}
また、アプリの動作で予想される範囲 (60 ~ 70Mb) のメモリ使用量が報告されているようです。Instruments で同時に測定を行っていますが、それでも 3 ~ 4Mb と表示されます。ここで何が起こっているのですか?