ガーベッジコレクション(以下GC)やメモリについて、あやふやのままにしていたところが多かったので、調べてみたことをメモしておきます。 メモリについて プログラムの使用するメモリは、レジスタ、スタック、ヒープなど用途によって分けられますが、高級言語になるにつれてこれらは隠蔽されています。 Javaの場合はスタックとヒープ領域の二つに分けられます。 スタック スタックはメソッド起動ごとにフレームを出し入れする線形のデータ構造です。このフレームの中にローカル変数や引数などのデータを持っています。 メソッドが終了するとフレームは破棄されるので、寿命が短いことが特徴です。 スタックはスレッドごとに割り当てられます。 ヒープ インスタンスなどを保持する領域です。GCによって、メモリの管理がなされます。 JVMで一つ割り当てられ、全てのスレッドから共有されます。 クラス構造などの静的なデータも保持されて