なんとなくyanma。

www時代以前からInternetに居る人の、日常の1コマ。
Mon, 11 May 2015 21:49:16

メモリ解放の話

最近は小さいデバイスでもマルチタスクで、
沢山のアプリを走らせればその分メモリも喰うわけで。

不要不急のアプリはとりあえず落としましょう。

…といったところで、
バックグラウンドで細々と動き続ける系のアプリも沢山。

ホントは、
ちゃんと行儀の良いメモリ管理をしているアプリを世に出すように心がけることのほうが重要なんですけどね〜…


アプリケーションってのはプログラムとデータに分けられて、
プログラムはコアとライブラリに更に分けられて。

ずっとメモリ上に居なきゃ行けないのはコアだけで、
ライブラリは必要に応じて展開されたり片付けられたり。
使用中はメモリ上に居なきゃいけないけれど、
使ってない時は一旦消してしまうか、
再使用時の展開オーバーヘッドを懸念してそのまま置いとくか。

データに関しては、
毎度毎度ストレージ直接アクセスではコストもかかりますから
編集中とか参照を繰り返すモノとかはメモリに展開しておきたいけれど
編集終わったモノとかはどんどん片付けていかなきゃいけない。

それを踏まえてざっくり分類してみると、
・一部でも消されたら再起動必須なモノ
・消されたらリロードコストがかかるモノ
・もう使わないので消され待ちのモノ

3番目を大量にまき散らしてるのはゴミ屋敷タイプなので、論外。
1番目をうっかり消してしまう類のバグはよろしくない。

さてさて。
バックグラウンドに回されてる間に2番目をどの程度保持しているか。
GUI系OSのパソコンのようにフォーカスされていない窓でも並行して動作している類であればメモリ上から待避させてしまうわけにもいかないけれど、
スマホのように全画面前提であればバックグラウンドで継続できる処理はかなり限定されるわけで、フォアグラウンドに戻すときのコストが多少掛かったとしても出来る限り待避させてメモリを空けておくほうが行儀が良いのではないでしょうか。

まぁそういうお行儀の良いアプリばかりなら良いのですが、
世の中そう行儀の良いアプリばかりでもないわけで。
でも普通であれば、フォアグラウンド側からメモリ供出シグナルが出されたら、
バックグラウンドからフォアグラウンドに戻るときに多少リロードコストがかかろうともメモリ領域は得られるハズなんですね。
じゃないと、フォアグラウンド側でメモリ不足を起こして、使い勝手的にサイテーなことになるわけですから。

じゃあ…メモリ解放アプリって何ぞ?

答えは簡単。
メモリ供出シグナルを限界まで繰り返し発行するんです。
各アプリが「もー無理!」って言った結果メモリ解放アプリがメモリ確保に失敗したら、確保した全メモリを解放して終了。
…ってねずみ小僧か!

だったらバックグラウンドに回して一時お休み中のアプリを明示的に一旦切ってしまったほうがわかりやすいですね(笑)
…火付け盗賊改め方、みたいなもん?

だいたい、
バックグラウンドでメモリ供出させられてからフォアグラウンドに戻ってきた時に弱参照破損で動かないアプリとかも意外と多いんですから…

Posted by yanma  Category:ITっぽい話  comments:0

この記事のトラックバック用URL

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  • Calendar

    2024年4月
    « 4月    
     123456
    78910111213
    14151617181920
    21222324252627
    282930  
  • Attention Please

    2020、サーバ引っ越し。物理サーバからCloudへ。
    2015のBlog引っ越しで自分管理になってから5年である…

    現在のお仕事: 声から健康状態を測定して未病改善に役立てよう!
    まぁそれ以外にも個人的には音声収録編集を筆頭に、音響屋だったり舞台裏いろいろだったり、インターネットラジオ等で喋っていたり、声優・役者・ナレーションなどなど表方までも。

    お仕事ご依頼の方は、こちらへどうぞ。
    ※強力な自動SPAMフィルターが掛かってます。誤認により遅達となる場合もあることをご了承ください。

  • Search by Google

    Google


    WWWを検索 blog内を検索

  • Categories

  • Comments

  • Archives

  • Syndicate this site