- ベストアンサー
Androidメモリ管理についての疑問
- Androidのアプリがメモリに常駐し続ける理由について調べてみました。
- なぜメモリを解放しないのかについては触れられていないようです。
- 性能の低さや不具合の原因にもなるのか疑問です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
タスク(というかプロセス)が残るのは、再度そのアプリが選択された際に素早く起動させるためで、OSの方針として行われている正常な動作です。 Androidのシステムは、そんなメモリに居座らせるプロセスに対して「あなたはこれから休止される(=メモリに居座る状態に切り替わる)ので、必要無いメモリは開放してください」という信号を送っています。 本来ならばその信号が届いた時点で、アプリはメモリを開放するのが正しい動作ですので、例えメモリ上にプロセスが居座ったとしても、メモリが圧迫されるようなことはありません。 では何故メモリを開放すると動作快適になるのかと言えば、個々のアプリのメモリ管理がずさんなためです。そういうアプリは、その信号を無視してメモリを確保したまま居座り続けるので、メモリ容量を圧迫してしまうのです。 プログラミングのノウハウが蓄積されてくればそういうアプリも減っていくのでしょうが、現状においては、ほとんどのアプリがこの手のメモリの開放を行なっていません。なので「アプリを終了させてメモリを解放する」というTIPSが成立してしまうのです。 あとついでに補足。 >スペックが低くてもWinCEベースのW-ZERO3とかの方が遙かに使いやすく高速に動きます。 そういう端末はハードウェアにべったりと依存してカリカリに突き詰められて動作しているので、スペックが低めでもそれなりに動きますが、ハードウェアが変わるとアプリが動かなくなることが多くなります。 WindowsMobileの時代のゲームなどは、搭載されているグラフィックチップや画面の解像度、VRAMの構成などが違うと全く動かない、なんてことは珍しくありませんでした。 Androidの場合、Javaの仮想マシン(Dalvik VM)の上でプログラムを翻訳しながら動かすので、スペックが高くないと快適には動作しませんが、そのかわりにハードウェアへの依存が低いので、どこのどんな端末でもきちんと動きます(もちろん細かい互換性の差はありますが)。 最近では端末の性能が向上して、そういう「一見ムダな処理」に割く能力の余裕が出てきたこともあり、後者のようなアプローチが許されるようになってきたということです。時代の流れですね。
お礼
随分遅くなってしまいました・・・。 回答ありがとうございます。 >そういう端末はハードウェアにべったりと依存してカリカリに突き詰められて動作しているので、スペックが低めでもそれなりに動きますが、ハードウェアが変わるとアプリが動かなくなることが多くなります。 WinCEの頃とかMIPS用ではSH上で走らなかったりしました。 アンドロイドはH/W環境を殆ど意識せず遅いなりに殆どアプリは走りますね。 しかしWinCEの頃みたいに商品としてCPUがまったく違う物て殆ど無いと思うのですけどね。ARMの一人勝ち状態ですし。 とりあえずメモリが開放されないのはアプリ側の問題って事で了解です!!