読者です 読者をやめる 読者になる 読者になる

【Android】GC(ガベージコレクション)

Android

 

AndroidというよりJavaGCガベージコレクション

JVMのメモリ管理システム。

使用しなくなったメモリ領域を解放してくれる優れもの。

 

---------------------------------------------------------------------------------------------

どういうときに発生?

・オブジェクトの参照が存在しない
メモリリーク(不要な参照が残りオブジェクトが解放されない)

・Old領域が100%に張り付いている
・System.gc()で強制的に実行可

 

発生するとどうなる?

GC間はアプリケーションが停止

つまり性能劣化の原因になる

 

メモリ領域の種類
New領域    ※ヒープ領域   マイナーGC  生成されてすぐのオブジェクト
Old領域     ※ヒープ領域   フルGC    長く参照されているオブジェクト
Permanent領域 ※非ヒープ領域  フルGC   クラスやメソッドなど

⇒フルGCが性能劣化の原因になる

 

分析・改善

フルGCが頻発する場合は。。。

①New領域のサイズ     ・・・JVMの設定を見直す

メモリリーク       ・・・不要なオブジェクトがないか

③プログラムが適切ではない ・・・文字列連結で「+演算子」をしている(遅い)

                                                             ⇒StringBuilderを使え

                 etc

※③は知識・経験・センスによるでしょうか。

 エンジニアの腕の見せ所でしょう。