HIKKIE

PC / スマートフォン / ガジェット好きのひきこもりライフログBlog

新しいAndroid スマホでメモリが増えたのに使用率が改善しない

アイキャッチ

時々、SNSや掲示板、ECサイトのレビュー欄などのネットコミュニティで新しいAndroid スマートフォンを購入して、メモリが大きく増えたはずなのに使用率が改善しない、むしろ悪化したと嘆く声を見かけます。

でもそれって、そんなに嘆く必要はないことである可能性が高いです。

Android スマートフォンは空きメモリは無駄なメモリという前提で動作する

Android スマートフォンは前提として、使われていないメモリ領域(空きメモリ)が大量に余っている状態はリソースの無駄であるという思想で設計されています。

そのため、新しいプラグラムを読み込んだりする動作に支障の出ない範囲で、利用可能なメモリをなるべく無駄なく使用するように動作します。システムはアプリが切り替えられた後もメモリ上に保持していて、ユーザーはすぐに元のアプリの状態に戻ることができます。このため、Android スマートフォンはほとんどの場合、空きメモリが少ない状態で動作するのが基本です。

空きメモリが無駄とされる理由

何もデータが書き込まれていない、使用されていないメモリの領域も、デバイスを起動しているとそれだけで電力を消費しています。デスクトップPCであれば無視出来るような消費電力ですが、スマートフォンのようなモバイルデバイスでは大きな影響を受けます。

また、スマートフォンで利用されるストレージは書き込みの総量に限界があるフラッシュメモリです。デスクトップPCやノートパソコンのSSDのように交換可能なメディアではなく、基板上に組み込まれているために寿命を迎えるとユーザーレベルでの修復は不可能となります。

そのため、優先度の低いプログラムをストレージ上に書き出し、必要になった時にストレージ上からメモリへと読み出すといったデスクトップOSで利用されている手法は基本的に使われていません。ストレージで使われるフラッシュメモリの寿命を著しく縮める可能性があるためです。また、ストレージへの読み書きはメモリと比べると圧倒的に遅く、大きな電力を消費することも好ましくありません。

こういった理由から、Android スマートフォンにおいては、ストレージへの一時的なデータの読み書きはなるべく避けられ、メモリ上に留め置かれます。また、使われていないメモリ領域があるのならばそれを積極的に利用するように動作します。

メモリ上の使われていないデータは古いプログラムから廃棄される

当然、メモリの量には限りがあるので古くて使われていないデータは定期的に破棄して、新しくて優先度の高いデータがなるべく保持されます。

Android OSの動作に必要なプログラムを1番として、現在利用しているアプリを2番、バックグラウンドのオーディオ再生、キーボードアプリなどが3番、ホームアプリが4番、直前まで利用されていたアプリが5番、最後に一時的にメモリ上に保持されているバックグラウンドアプリの優先度が最も低く、利用の古かったアプリから「ところてん」式にメモリ上のデータが破棄されていきます。

保持される古いアプリの数や、メモリ上のデータを破棄する残りメモリ領域の閾値はデバイスやOEMベンダのカスタマイズによって差異があります。ただ、物凄く大雑把に言えば基本的に、キャッシュまで含めて残りのメモリが1GBちょいから数百MB程度を維持するように動作します。

例えば、メモリ4GBの端末ではユーザーから見て全てのアプリを閉じた状態で、だいたい65 - 80%くらいの状態が維持されます。メモリが6GBの端末では75 - 85%くらいの状態が維持されます。そうすると、メモリが増えているはずなのに、使用率が悪化しているという事象が発生するわけです。

メモリ使用率を改善することは出来るがパフォーマンスが大きく改善する可能性は低い

メモリ上に保持される一時的なアプリのデータは、

  • そもそもインストールされているアプリを減らす
  • インストールされていてもまったく利用しなければその内システムがメモリ上に保持するのをやめる

と言った方法で減らすことは出来ます。アプリをほとんどインストールしていないまっさらなデバイスではメモリ使用率は改善して見えるはずです。システムを再起動する、タスクキラー系アプリを利用するなどの方法で一時的にメモリの使用率は改善して見えますが、結局は後から呼び出されるだけなので意味がありません。再起動自体は時々やったほうがいいのですが。

とは言え、メモリ上に保持された一時データを破棄するのはナノ秒単位の一瞬の出来事です。見た目上のメモリ使用率が改善されたところで人間の感覚でパフォーマンスの向上を実感することは難しいと思われます。それよりは、メモリ上に頻繁に利用するアプリのデータが保持されていることでのパフォーマンス向上効果のほうが大きいです。

メモリは、足らなくなると動作が著しく緩慢になる、アプリがクラッシュするなどの大きな支障が発生します。そのため、パソコンやスマートフォンの購入相談などではとにかくメモリだ、メモリを盛れということが言われがちです。

それ自体は間違った話ではないのですが、メモリは使っていない状態でたくさんあっても意味がありません。メモリを増やせば増やしただけシステムの動作速度が加速度的に上がっていくというわけでもありません。メモリの使用率を見て気に病まれるのはほどほどにしておくことをお勧めします。

参考・関連リンク

プロセス間のメモリ割り当て  |  Android デベロッパー  |  Android Developers

あわせて読みたい: