2017年9月3日日曜日
メモリリーク調査
こんばんは。お久しぶりです。
ブログは更新していませんでしたが、開発は行っています。
ふと、メモリリークはしていないのか気になって、調査してみることにしました。
確保された領域は、どこからも参照されなくなれば、GC(ガベージコレクション)でシステムが勝手に解放してくれます。
参照をなくした後にGCを強制的に行い、解放が行われているかチェックすれば、メモリリークを見つけられます。
Android Studioでデバッグ中に、Android Monitorで、一連のチェックが行えます。
上のAndroid Monitorの赤で囲った部分の一番左のアイコンをクリックすると、GCが行われます。
真ん中のアイコンをクリックすると、メモリの状態が記録されます。
あるいは、Leakcanaryというライブラリを使用してもチェックできます。
Leakcanaryは、https://github.com/square/leakcanaryにあります。
やり方も記載されていますが、一点、はまったことがあります。
全く、メモリリークが検出されないのです。メモリリークが元々なかったのかと一瞬思いましたが、チェック自体が走った形跡もなかったので、ライブラリのソースを追ってみました。
なんと、デバッグでアタッチしている場合は、チェックしないようになっていました。
私、USBで繋いで、ばりばりデバッグアタッチしていました。
なので、スマホにデバッグ版をインストールした状態で、アイコンをタップしてアプリを単体で動かしたところ、メモリリークが無事?、検出されました。
Activityを閉じたときにチェックしています。
メモリリークの内容は、後日書こうと思います。
登録:
投稿 (Atom)