2013年12月20日

Android 高速化に関して

Android を利用されている方の多くは、高速化に関してかなり関心を持っているように思いますが、
ネット上の情報には、Android の高速化に関して正しくないと思われる記事を見かけます。

それら間違いの多くは、パソコンの高速化と同じ原理が、スマホ(Android)にも当てはまるという考えから来ているのかもしれません。

*** 1, タスクキラーでメモリを開放すれば高速化 ***

パソコンでは、物理メモリが圧迫されるとメモリの一部を内蔵ディスクなどにスワップする仕組みがあり、アプリケーションを実行するために十分なメモリを確保できれば、高速化できるというものがあります。

しかし、Androidでは事情が異なります。

一般的なAndroidにはスワップがありません。そしてメモリが足りない場合は動作しません。また、空きメモリがある場合は無駄だという設計思想により、利用しなくても取り敢えずメモリを確保しようとします。どんなに十分なメモリがあっても、常に80%程度使用中になると思います。単純に空きメモリを増やす行為はあまり意味がありません。

それでは、何が問題なのでしょうか。
メモリが足りずにパフォーマンス低下を招く主な理由は以下のものです。

アプリには「ライフサイクル」という概念があり、「停止」→「初期化処理」→「動作中」→「終了処理」→「停止」を繰り返します。もし、空きメモリが少なくなると、OSが利用しなくなったバックグラウンドのアプリに「終了処理」の命令を出して終了させようとします。

しかし、「終了処理」の作りが悪く重い処理であった場合はこの処理が原因でパフォーマンスの低下を引き起こします。したがって、Androidには明示的にアプリを終了させない設計思想があるため、どんなにメモリが多い機種であっても、「空きメモリが少ない」状態がいずれ訪れ、「終了処理」のためのパフォーマンス低下を引き起こします。

高速化のポイントは「終了処理」をいかに発生させないかにあります。

そうです。いわゆるタスクキラーアプリを利用すると「終了処理」が発生しません。「動作中」から一気に「停止」へ強制的に移ります。

これが、タスクキラー高速化の主な理由です。実は「メモリの空き」はあまり関係ありません。

※タスクキラーの副作用として、強制的な不正終了によるアプリ管理のデータへのダメージ、整合性を崩すなどの問題があります

*** 2, キャッシュを削除すると高速化する ***

良く見かける記事は、「利用していないデータや探索キーがあるため、無駄を削除すれば高速化する」というものですが、人が認識できる程度の違いが出るとは思えません。むしろ高速化のための仕組みのキャッシュを削除することが原因のパフォーマンス低下の弊害が予想できます。

しかしながら、高速化できるであろう理由は2つあります。内蔵ストレージ(SSD)の性質上、空き容量が著しく少なくなると、書き込み速度が極端に低下します。

たとえば、空き容量が10%程度の状態であり、キャッシュ削除により20%程度まで回復できたとすれば速度向上が確認できると思います。

もうひとつの理由は、アップデートなどが理由で、キャッシュの整合性が崩れている場合です。誤動作によりパフォーマンスが低下している状態であれば高速化が見込めます。

筆者の経験では、後者の理由により高速化した(正常動作した)ことが多いと感じています。

*** まとめ ***

高速化というよりも、正常に動作させる工夫という方が正しいのかもしれませんね。

posted by CatappWorks at 11:28| Comment(0) | Android
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: