2018/01/13 【Java】学習メモ
ーJavaの仮想環境
ー
ーOSに依存せずにJavaプログラムを実行することを可能にする機能。
ーOSごとに違うJVMを持つが、仮にWindowsでコンパイルして作成したクラスファイル(バイトコード)でも、Linuxで実行することが可能。
ーJavaはOSに依存せず実行可能な言語。
ーOSごとのネイティブコードに変換する。
Permanent領域
ー非ヒープ領域
ーヒープとはシステムが利用するメモリ領域
ークラスやメソッドなどの情報が格納される領域
New領域
ーヒープ領域
ーEden領域
ーオブジェクトがインスタンス化された時に利用する領域
ーFrom領域、To領域
ーEden領域のメモリが満たされた際、オブジェクトの退避に利用する領域
Old領域
ーヒープ領域
ーNew領域に格納されているオブジェクトで使用期間が長いものが格納される領域
ーOld領域がいっぱいになるとFull GCが起こる
ープログラムが確保したメモリ領域のうち、不要になった箇所を解放する機能
ーガーベジコレクションにシステムの動作が停止することがある
ーFull GC
ー使用可能なメモリが不足し、プログラムが動作しなくなる状態
Scavenge GC
ーNew領域のみに対し働くガーベジコレクション
Full GC
ーOld領域を含む全領域で働くガーベジコレクション
ー処理に時間がかかる
ーOld領域が多く使用されるほど、Full GCが起こる可能性が上がる。
ーオブジェクトの使い回しを増やさないようにすると回避できる?
ー新しいオブジェクトを大量に使う場合は、New領域を大きくする?
ーOld領域の使用を減らす狙い