プログラムが確保したが、不要になったメモリ領域を自動開放する言語の機能
・確保済み領域の要否を自動判断
変数やオブジェクトから参照されてるか?で判断
・開発者がメモリ開放処理を忘れても、安全に開放する。
〇メモリリーク(解放漏れ)を防ぐ
×システム負荷増
プログラムが確保するメモリ領域の種類
タイプ | 確保・解放 | 割当容量 |
---|---|---|
ヒープ領域 | 任意に可能 | 不定 |
スタック領域 | 順番あり(下→上・上→下) | 固定 |
ヒープ領域とは?スタック領域との違いや具体的な管理方法を解説!|ITトレンド
「LINUXのヒープ領域について」(1) Linux Square − @IT
ヒープ領域は使いやすいが、メモリリークが発生しやすい。
ガベージコレクションは、ヒープ領域のメモリリークを防ぐ。
ヒープ領域にはNewとOld領域がある
タイプ | 格納されるオブジェクトの寿命 |
---|---|
New | 短い |
Old | 長い |
ガベージコレクションの種類
タイプ | 対象領域 | 発生頻度 | 効果 | 負荷 |
---|---|---|---|---|
Scavenge GC | New | 多 | 小 | 小 |
Full GC | All | 小 | 大 | 大 |
Full GCは非常に重い処理で、動くとアプリ応答遅延が発生する。
なので、動かないようにすべきもの。