うぃまの旅日誌

公開

Android端末の調査報告3 【GCと疑似メモリリーク】


( 前回の続きです )

……○……○……○……○……
あるサイトで気になる記述を見つけましたので引用します。


「数日から数ヶ月の間、連続稼働を続けるプログラムの中には、長期間の稼働中、徐々にパフォーマンスが悪くなり、ついにフリーズ状態に陥ってしまうというトラブルを起こすものがある。
Javaプログラムでトラブルに見舞われた場合、JVMの中でメモリリークと呼ばれる現象が発生しないか確認をする必要がある。」


※参考にしたサイト
・Java-JVMの起動と実行
http://eclipse8android.blog.fc2.com/blog-entry-91.html?sp


メモリリークは、メモリ解放が行われず、メモリ内にデータを保持し続けてしまうバグの一種のことです。
私は「メモリの消費が常に大きく、使用できるメインメモリ(RAM)がごく僅かになっている」と考察しましたが、結果としてメモリリークと同じ状況に陥っているのではないかと思いました。


旅日誌上のAndroidユーザーさんの報告を確認させていただくと、不具合の"発生時期"や"期間"に個人差があるため、引用した文章の内容と症状が似ている気がします。





………………………………
【メモリ解放手段】
・一時的なプログラム(アプリ使用時などに作成)
→「アプリを終了する」

・常駐プログラムやサーバソフトウェア
→「そのままメモリを圧迫してしまう」

・OS
→「再起動」

※参考にしたサイト
・メモリリーク-[78IT]Webシステム開発のセブンティエイトアイティ
https://www.78it.com/memory-leak/#


こちらもサイトから一部引用していますが、「キャラストなどのアプリ」は一時的なプログラム、「Androidランタイム」はサーバソフトウェア、「Androidスマホそのもの」はOSに当てはまるかと思います。
そうなると、Androidランタイム自身はメモリ解放が基本的に苦手なのかもしれません。GCでメモリ解放は行っていますが、過剰に実行するとフリーズしてしまうため、破損したデータがメモリ内に残ったままになっていた可能性もありそうです。

旅日誌で見受けられた不具合の対処法の一つとして、「アプリの一時停止(強制終了)をした後、再起動を行う」がありました。
私としてはメモリ内の破損したデータを解放したことで、使用できるメモリ容量が一時的に増え、ログインができるようになっていたのではないかと感じました。
ただ、頻繁に使用すると、アプリ本来の機能が正常に動作しなくなる可能性もあるそうなので、どうしても必要な場合のみ使用するのがよさそうです。
※参考にしたサイト
・Androidアプリの強制停止(強制終了)の意味は?無効との違い
https://itojisan.xyz/knowledge/34410/





また、これは私の想像になりますが、GCはメモリが不足してくると自動的に作動するため、キャラストのアプリを閉じている間もバックグラウンドでメモリ解放を行っていたのではないかと思います。
そのため、

①キャラストを開くことで、メモリをたくさん消費する
    ↓
②GCが過剰に実行されフリーズする。破損したデータがメモリ内に残る
    ↓
③キャラストを閉じた後も、バックグラウンドでメモリ解放が行われる
    ↓
④破損したデータが除去され、キャラストを動かすために必要なメモリ容量が得られる
    ↓
※①に戻る

このような流れが発生していると仮定しました。
このことから、「今までキャラストにログインできなかったのに、しばらく時間を置いてから起動すると、なぜかログインできるようになった。」という現象が起きていたのではないかと考えています。


そして、Androidスマホの機種によってメモリ容量(〜GB)に差があるので、数日置きにログインできるようになったり、数週間経ってからログインできるようになったりと不具合の出方にも個人差があったのではないでしょうか。
(※キャラストの起動時間が長い場合も、その分メモリ解放に時間が掛かりそうです。)





最後にあるサイトの記述を引用します。


「…削除するオブジェクトが多かったりするとCPUの占有率を高め画面のカクツキとして現れます。GCの処理は意外と重いのです。」

「大量に溜まったゴミ(メモリ内に残ったデータ)をGCが削除すると、先ほど説明した"画面のカクツキ"が起こります。」




もしかすると、Androidスマホでキャラストを遊ぶと画面がカクついていたのは、GCの処理によるものだったのかもしれません。
※参考にしたサイト
・ゲームにおけるガベージコレクションとの付き合い方
https://qiita.com/bkzen/items/d84312246061778ee870



( 続きは明日に投稿します )
※明日からは考察に対する提案になります。




うぃま

コメント