droidroid

android好きのandroidブログ コメント大歓迎です

Nexus5が欲しいです・・・
基本的に転載・リンクはフリーですが、一声かけてくださるとうれしいです。。

Androidの追加メモリ管理~swapとZRAM~(要root)

今回は少し難しいですが、Androidのメモリ管理についてです。
概ねどんな端末にも通じる話かと思います。




※root化前後の操作は自己責任でお願いします。
不具合・故障等が発生しても当ブログは責任を負いません。


Androidのメモリ(RAM)に関しては過去にも何度か紹介しました。

基本的には「タスク管理アプリを導入する」ということになります。
root済・非rootでも、方法は異なりますが
常駐しているタスク(アプリ)をキル(終了)して空いているメモリを確保するというのが
タスク管理アプリの仕事ですね。

さて、タイトルにある、swapとZRAMという単語ですが
これらは上記のタスクキルとは異なり、逆にアプリを「生かす」為のものです。
Androidはマルチタスクが得意なOSですので、この「アプリを生かす」ということには大きな意味があります。

もちろん、タスク管理アプリで終了させない(優先順位をつける)アプリを選択することはできますが
swapとZRAMは全てのアプリが対象になります。


理解を深める為に、Androidのアプリの動作について少し整理します。

まずAというアプリを起動しました。
続いて、Bというアプリを起動しましょう。
続いて、Cというアプリを起動・・・
という感じでいくつかアプリを起動したとします。
その後、Aというアプリに戻った時に、どういう状態になっているでしょうか?

起動したアプリの数にもよりますが
おそらくはAを起動した初期の画面になっているかと思います。
つまり、AからBにアプリを切り替えた際のAの状態ではないということです。

これはタスクキルによるものなので、しっかりとタスクキルが働いているという証明になりますが
Aでの作業をすぐに再開したい場合などもあるかと思います。

そんな時にswapやZRAMが活躍してくれるというわけです。
「アプリを生かす」=「アプリをそのままの状態で維持してくれる」ということです。

(もちろん限界を越えれば、キルされてしまいますが・・・)

頻繁にアプリの切替を行う方にとっては、非常に有用な機能になるわけです。


さて、ではswapとZRAMは具体的にどのようなものか。

①swap
これはパソコン等でも使われることがある機能ですね。
簡単に説明すると、「メモリ(RAM)上ではなくHDDやROM側に保存する為の領域を確保する」というものです。

RAMにあまり負担をかけないのがポイントですが
逆にいうとRAM上で確保するのではないので、少しラグというか動作に問題が出る場合があります。
Androidの場合はSDカード上に作成することになるのでやはり速度に不満が残る可能性が高いです。
そこでもう一つのZRAMを見てみましょう。


②ZRAM
これは最近になって流行ってきたものです。
動作としてはswapと同じ形になるのですが、こちらは「RAMベースである」のが特徴です。
勘のいい方はもうお気づきかもしれませんが、こちらはswapより高速に動作することができます。


ということで

ZRAM > swap
になります。

では肝心の導入方法です。
・・・といきたいところですが
swapとZRAMのどちらも、カーネルに依存してしまいます。
つまり、対応しているカーネルが必要になります。

swapに関しては、デフォルトでも対応しているカーネルが多いのですが
ZRAMになると、デフォルトでは対応しているカーネルが少ないのが現状です。


ですので、ZRAMに対応していればZRAMを、対応していなければswapを導入するのがいいでしょう。

①ZRAMの導入
と書きましたが、まずはZRAMに対応しているカーネルを探す必要があります。
私の使用しているNexus4ではAKカーネルというカスタムカーネルを導入していますが
このカーネルがZRAMに対応していました。

導入はカーネルの設定から行います。
以前に紹介したこともある、「Trickster MOD Kernel Settings」というアプリで設定が可能です。

Trickster MOD Kernel Settings(http://play.google.com/store/apps/details?id=com.bigeyes0x0.trickstermod)

設定項目があるので、ZRAMを有効にするだけです。

もしTrickster MODで設定項目がない場合はZRAMに対応していないカーネルということになりますので
swapを導入することになります。


②swapの導入
こちらは専用のアプリがあります。

Swapper for Roothttp://play.google.com/store/apps/details?id=org.azasoft.free.swapper&hl=ja

アプリを起動したら「Active Swap on Boot」にチェックを入れて
swapファイルを作成するパーテションを選択し、ファイルサイズを指定するだけです。

・・・が、端末によっては正常に動作しない場合があります。
そもそもswapに対応していないカーネルの場合もありますが
swapに対応している場合は、アプリから設定しなくても
スクリプトで有効にできる場合があります。

このスクリプトは端末によって変わってくるので
各自で調べていただく必要がありますが。。。



私はNexus4でZRAMを、106SHでswapを導入していますが
どちらもしっかりと動作しています。

特にNexus4のZRAMの効果は非常に強力でアプリの切替で
終了してしまうことがほぼありません。


今回はタスクキルから一歩進んだ、メモリ管理のお話でした。
対応していれば、ぜひ導入することをオススメします。