重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Androidのアプリは立ち上げたら最後、メモリに常駐し続けるのは何故なのでしょう?
HOME長押しで起動中のアプリ一覧からアプリを終了させても、アプリのメニューから終了を選んでもタスクは残ったままメモリに居座り続けます。
WEBで調べてみても「メモリを解放すると動作快適に!!」みたいな記事は有るのになんでそんな仕様なのかについては全く触れられてません。
エクスプローラみたいな機能も標準では付いて無いし、アプリを終了させるにも専用にソフトが居るのは何故こんな仕様なのでしょうか?
スペックが低くてもWinCEベースのW-ZERO3とかの方が遙かに使いやすく高速に動きます。
私の使っている端末はNECのN04Cなのですが、不具合多いですし、もしかしてハードウェア由来の物なのでしょうか?
でもアプリで終了させれる訳ですからARMのメモリプロテクション関連の不具合でも無いでしょうし・・・。
うーん。

A 回答 (1件)

 タスク(というかプロセス)が残るのは、再度そのアプリが選択された際に素早く起動させるためで、OSの方針として行われている正常な動作です。



 Androidのシステムは、そんなメモリに居座らせるプロセスに対して「あなたはこれから休止される(=メモリに居座る状態に切り替わる)ので、必要無いメモリは開放してください」という信号を送っています。
 本来ならばその信号が届いた時点で、アプリはメモリを開放するのが正しい動作ですので、例えメモリ上にプロセスが居座ったとしても、メモリが圧迫されるようなことはありません。

 では何故メモリを開放すると動作快適になるのかと言えば、個々のアプリのメモリ管理がずさんなためです。そういうアプリは、その信号を無視してメモリを確保したまま居座り続けるので、メモリ容量を圧迫してしまうのです。
 プログラミングのノウハウが蓄積されてくればそういうアプリも減っていくのでしょうが、現状においては、ほとんどのアプリがこの手のメモリの開放を行なっていません。なので「アプリを終了させてメモリを解放する」というTIPSが成立してしまうのです。

 あとついでに補足。

>スペックが低くてもWinCEベースのW-ZERO3とかの方が遙かに使いやすく高速に動きます。

 そういう端末はハードウェアにべったりと依存してカリカリに突き詰められて動作しているので、スペックが低めでもそれなりに動きますが、ハードウェアが変わるとアプリが動かなくなることが多くなります。
 WindowsMobileの時代のゲームなどは、搭載されているグラフィックチップや画面の解像度、VRAMの構成などが違うと全く動かない、なんてことは珍しくありませんでした。

 Androidの場合、Javaの仮想マシン(Dalvik VM)の上でプログラムを翻訳しながら動かすので、スペックが高くないと快適には動作しませんが、そのかわりにハードウェアへの依存が低いので、どこのどんな端末でもきちんと動きます(もちろん細かい互換性の差はありますが)。

 最近では端末の性能が向上して、そういう「一見ムダな処理」に割く能力の余裕が出てきたこともあり、後者のようなアプローチが許されるようになってきたということです。時代の流れですね。
    • good
    • 0
この回答へのお礼

随分遅くなってしまいました・・・。
回答ありがとうございます。

>そういう端末はハードウェアにべったりと依存してカリカリに突き詰められて動作しているので、スペックが低めでもそれなりに動きますが、ハードウェアが変わるとアプリが動かなくなることが多くなります。

WinCEの頃とかMIPS用ではSH上で走らなかったりしました。
アンドロイドはH/W環境を殆ど意識せず遅いなりに殆どアプリは走りますね。
しかしWinCEの頃みたいに商品としてCPUがまったく違う物て殆ど無いと思うのですけどね。ARMの一人勝ち状態ですし。

とりあえずメモリが開放されないのはアプリ側の問題って事で了解です!!

お礼日時:2012/08/03 16:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!