こんにちは。元OSマニアのAndyです。

iPhoneのマルチタスクバー(下の画面の一番下のところです)からアプリって消してますか?
マルチタスクバー

という疑問を抱いたのは「マルチタスクから超高速でアプリを消す方法!通常の2倍〜4倍速くなります!」という記事をAppBankさんで読んだからでした。

実は私、マルチタスクバーでアプリを消したこと、ほとんどありません(iOS4になったばかりはやったことがありますが)。あまり意味がないような気がするからです。

そこで、ちょっとした検証をしてみたのですが、その話をする前に、まずiPhone(iOS)のメモリ管理について私が理解していることをまとめておきましょう。

ツイッターで教えてもらった記事(aquarlaさん、ありがとうございます)「iOSのマルチタスクに関する誤解」は、私の理解とほぼ一致しているので、そちらも良かったら見ていただくといいと思うのですが、端的に言うと、iPhoneではアプリがマルチタスクバーにあるからといってメモリに残っているとは限らないのです。

試しに、リストをずっと遡ってアプリを選んでみてください。おそらく、アプリの起動画面が表示されてアプリが立ち上がるでしょう。その場合、そのアプリはメモリ上には存在しておらず、iPhoneを重くする理由にはなっていないのです。

アプリを使っているときに、ホームボタンを押した直後などは、まず確実にメモリに残っています(マルチタスクに対応していないアプリはダメですが、今はほとんどないでしょう)。マルチタスクバーからそのアプリを選ぶと、元の状態に瞬時に戻るでしょう。

iOSの画面でアプリをタップして起動すると、それがメモリ上に残っていたらそこから復帰をし、そうでないとしたら新たにメモリを確保して起動します。このとき、確保するメモリがなかったら、メモリ上にあるアプリを強制的に終了させ、メモリをかき集めます(どの順に終了させるのかは明確ではありませんが、多分使われたのが古い方から消しているのでしょう)。これはiOSが勝手にやることなので、ユーザーが意識して消す必要はありません。

例えばWindowsだったらアプリをどんどん起動していくと、最後にはメモリが足りなくなって、立ち上がらなくなりますが、iOSは上記のような仕組みを取っているので、メモリ不足で新しいアプリが立ち上がらないということはめったに起こりません(経験的に、全く起こらないというわけではないのですが、どういうときにそれが起こるのかは検証できていません)。

マルチタスクバーからアプリを削除すると、それがメモリ上にある場合はメモリを解放して空きメモリが増えます。そうでなければ、そこに表示するリストの整理をするというだけの意味になります。

そうすると、マルチタスクバーからアプリを全削除することにはどういう意味があるのでしょうか。

使ったアプリのリストを人に見せたくないというケースはあるかもしれません。例えば中高生が親にiPhoneで遊んでいないかどうかチェックされる場合とか。

空きメモリを増やすという意味では、全く無意味ではありませんが、全部消さなくても最初の10個くらいを消しておけば実質的には十分だと思います。

ただ、空きメモリを増やすのなら、そういう機能を持ったアプリを使うという手もあり、それとどう違うのかも気になります。私のiPhoneにはiMemoryGraph、MemReturnという2つのメモリ解放機能を持つアプリが入っているので、それを使ってちょっと実験してみました。次のグラフは、iMemoryGraphで見た空き容量のあらましです。

メモリグラフ

実験では最初の段階(空きメモリ5.7Mバイト)から、マルチタスクバーで全削除(空きメモリ273.4Mバイト)し、次にiMemoryGraphの機能でメモリを解放してみます(空きメモリ292.3Mバイト)。

次に、iPhoneを再起動した直後のメモリを調べ(空きメモリ260.1Mバイト)、アプリを30個ほど次々に起動します(空きメモリ17.2Mバイト)。次にiMemoryGraphで解放し(空きメモリ299.9Mバイト)、最後にMemReturnで解放しました(空きメモリ328.7Mバイト)。

なお、お断りしておきますと、前述のようにこれらはすべてiMemoryGraph上に出た数字なので、iMemoryGraphを立ち上げたことによる減少分というのが含まれています。例えばMemReturnで解放したとき、同アプリ上では347Mバイト程度の空き容量を示していました。その後にiMemoryGraphを立ち上げているので、グラフ上の数字はちょっと目減りしています。

この実験結果からすると、メモリ解放アプリを使ってメモリを解放する効果はマルチタスクバーから削除するのと同等あるいはそれ以上(目くじら立てるほどの差ではありませんが)です。それであればわざわざマルチタスクバーから消去するよりもメモリ解放アプリを使う方がスマートなのではないかと思います。

また、メモリ解放アプリ間でもやっていることは多少違うようです。iMemoryGraphはアプリのメモリ削除が主な方法のようですが、MemReturnはもっといろいろやっていそうな感じです(OSのワーキングメモリを削除しているとか? そのあたりは不明です)。

ところで、iMemoryGraphではそのときにメモリにあるプロセスのリストも見られます。それを見ると起動時でも30近くのプロセスが既に動いていることが分かりました。グラフで空き容量17.2Mバイトを示している状況では44個。14個の差であり、この時点で、既にメモリから追い出されているアプリが生じています。アプリによって使うメモリは大きく違うので、この14という数字自体にはあまり意味はありませんが、概ね10数個以上削除しても、メモリ解放という意味はそれほどないと言っていいでしょう。

結局、マルチタスクバーからアプリを全削除することには、
・使ったアプリのリストを人に見られるとやばい
・メモリを解放する
という効果がありますが、後者に関しては
・メモリ解放アプリを使うほうがスマート
・全部削除しなくても最初の十数個を削除すれば実質的には十分
ということが分かりました。

最後にここで試したメモリ解放アプリの記事のリンクを貼っておきます。MemReturnの方が解放量は上でしたが、個人的にはプロセスなどが可視化できるiMemoryGraphがお薦めです(MemReturnは既にAppStoreから削除されているようです)。iPadにも対応しています。なお、アプリ自体は無料ですが、メモリ解放機能を使うには85円の広告削除アドオンを購入する必要があります。

[iPhone,iPad] iMemoryGraph v1.4: メモリ解放アプリならこれだ!無料。1802
MemReturn: 神風モードをこえる「スーサイド」モードがやばいメモリ解放アプリ!スピードも魅力!(現在はAppStoreにないようです)

EvernoteのDevcupに参加しています。ご協力お願いします