読者です 読者をやめる 読者になる 読者になる

3GSでも、空きメモリがかなり少なくなることがあるみたいですね。

SysStats Lite iPhone 3GS iPhone技術情報

iPhone 3GSの「倍増したRAM」を体感する。 - The iPhone Development Playgroundで、電話、Mail、SafariiPodの4つのプロセスが立ち上がっていても、空きメモリが、80MBあるということを書きました。ところが、使い込んで行くと、MailやSafariのメモリ使用量が、さらに増えて行き、最終的には、空きメモリがかなり少なくなることがわかりました。
まず、以下のスクリーンショットの抜粋を見てください。

4.1MBと、かなり空きメモリが、少なくなっています。これは、3Gのときによく見られた円グラフの形によく似ていますね。実際の電話、メール、SafariiPodのメモリ使用量の内訳は、以下のようになっています。

注: 赤枠で囲まれた部分が、メモリ使用量になります。
アプリケーション名とプロセス名の対応は、以下の通りです。

アプリケーション名 プロセス名
電話 MobilePhone
メール MobileMail
Safari MobileSafari
iPod MobileMusicPlaye

この4つのプロセスのメモリ使用量を合計すると、100MBを超えています。特に、SafariとMailだけで90MB以上になっています。3Gでは、ありえない数値ですね。もしかすると、空きメモリがあれば、どんどんキャッシュなどにメモリを使うような実装になっているのかもしれませんね。
では、この状況で、メモリを多く使いそうなゲームを起動するとどうなるでしょうか?
試しに、メモリ使用量が40MB以上になるゲームを起動してみましたが、特に問題なく起動され、普通に使うことができました。そして、終了したあとのメモリの状況を見てみました。

そのゲームアプリのメモリ使用量より少し大きいサイズまで、空きメモリが復活しています。
3Gのときは、こういう場合にSafariやメールが強制終了されていましたが、それらのアプリケーションはどうなっているでしょうか?

それらのアプリケーションは、いずれも強制終了されずに実行されたままになっていますが、それぞれのメモリ使用量は、減っています。
これは、各アプリケーションが、キャッシュなどの解放可能なメモリを解放して、空きメモリを増やすような動きをしたのではと想像されます。そもそも、搭載されている物理メモリ容量が大きいので、強制終了までしなくとも、充分な空きメモリが作れたと考えるのが自然なのかなどと考えてしまいます。

このあたりの動作に関する正確な仕様は、ドキュメントなどに書かれていないので、今回の話も「見た目からの想像」になっています。
ただ、3GSの上で、3Gでも動作可能なアプリケーションを実行する分には、空きメモリが少ないことに、あまり過敏になる必要はないと言えるのかなと思います。もちろん、メモリ使用量が100MBにもなるようなアプリが出てくれば、それはまた別の話ですが。。。

3GSは発売されて間もないので、まだまだわからないことがたくさんありそうですね。

7/1 追記

少し、言葉が足りない部分があったので補足します。
ここで説明している内容は、3Gと3GSのハードウェア仕様の違いではなく、物理RAMサイズの違いに焦点を当てています。
3Gでも、空きメモリが少なくなると、同様のこと(各アプリケーションが、キャッシュなどの解放可能なメモリを解放して、空きメモリを増やすような動き)が起きますが、そもそも物理RAMサイズが少ないので、それだけでは必要な空きメモリを作れないことがあります。そんなとき、仮想メモリがないiPhoneでは、スワップアウトもできないので、Safariなどのプロセスが強制終了されることがあります。3GSでは、物理RAMサイズが倍増したので、そういう形で強制終了される場面は少なくなるであろうと思われます。