という検索がよくくるのでこれについてちょっと考えてみたいと思います。
やっぱり間違えている「スマートフォンは携帯電話ではなく通信端末」
という前提がまず必要だと思います。つまり、携帯電話のように「メモリ管理が厳密でかつ同時に起動しているアプリ数などを完全にOSが管理している」ような物ではない、ということです。
これについては携帯電話アプリの開発経験があるのでたぶんこの表現で間違いないと思います。
この辺が携帯電話(フューチャーフォン系列)のいいところで、管理が恐ろしく厳密なんですね・・・。
メモリが足りないときの動作などを完全にテストする必要があり、それに通らないとアプリが公開できなかったりとかします。
メモリリークなんてもってのほか(少しでも(1byteでも)あると理由が検証できなければ×)ですし、バックグラウンド動作がかなり制限されているのもあります。
(バックグラウンド時には使わないインターフェイスをすべて解放しなければならない、という物もありますし)
それに比べてiOSやらAndroidのプログラムは
それなりの制限はありますが、かなり緩いのではないか、と思います。
といっても、開発経験はあっても提出経験がないので正しいかどうか不明ですが。
それでもメモリ管理などはリークテストなどもありますが、それでもメモリ管理をVMがやってくれるようなAndroid系みたいな物もありますので。
また、これらは今だとすでにマルチタスクが前提になっていてバックグラウンド動作に入ってもメモリを解放する必要がないんですね。
メモリが不足しがちになっても「メモリを解放してくれないか?」とOS側から依頼が来る程度ですし。
スマートフォンではPCと同じように「タスク管理を自前である程度行う」必要がある
ということです。iOS系ではまだわかりやすい(ボタンをダブルクリック(?)すればバックグラウンドにあるタスクが見られるのでそれを長押しして強制終了すればメモリを空けられる)のですが、Android系が・・・。
まずは素直にタスク管理アプリを突っ込むべきだと思います。
管理がややこしいところにある上に簡単に終了できない(プロセスとサービスに分かれていたり、どれが起動していてサービスだとどれがシステムでどれがユーザーサービスかわからなかったり)ので中級者でもメモリ不足を起こす可能性があります。
とにかく「いらないタスクを強制で落とす」ことが基本になると思います。
アプリ起動中にホームボタンでホーム画面に戻るとたいていのアプリがバックグラウンド常駐状態になってメモリを消費しますし、そうでなくてもバックグラウンド動作が前提の物などは戻るボタンでも終了しません。
(バックグラウンド状態とはWindowsで言うとタスクバーに入ったままウィンドウが出ていないプログラムのような状態を思えばわかると思います。Windowsのバックグランド状態とはちょっと違うんですね・・・。)
私もタスク管理アプリでやばそうだと思ったときにはタスクを消して回っています。自分が立ち上げた記憶があるアプリで今現在使っていなければ容赦なく強制終了でいいと思います。
一応Xperia acroで空きメモリが50MBを下回るようなことがないようにしておいています。(基本はタスク管理プログラムが立ち上がっていても130MB前後の空きがある状態を維持する)
そう考えると「スマートフォンは通信端末と言うより通信できる小型PC」と言うべき?
この系の話はこの系の話題をする記事やblogにはよく書いてあることだと思います。
今の状態だとこれはある程度は正しいと思います。がんばって使いこなしていきましょう。