JAVA-基礎理論1 JVM GC


1. Java Virtual Machine


プログラムが実行される前に、次の順序で展開されます.
(1)「ソース.java」の記述
(2)ソースファイルをコンパイラ(javac.exe)にコンパイルする
(3)「ソース.class」バイトコードファイルの生成
(4)JVMドライバコマンド(java.exe)によるJVMでの説明
(5)オペレーティングシステムによる機械言語の翻訳
JVM (Java Virtual Machine)
Javaプログラムを説明するソフトウェア/仮想マシン
オペレーティングシステムにかかわらずJavaプログラムを解釈して実行できるため、柔軟です.

.

2. GC (Garbage Collector)


Javaは開発者がメモリに直接アクセスできないように設計され、メモリはJavaが直接管理する.
オブジェクトの生成時にメモリ領域が自動的に検索されて割り当てられ、使用されていないオブジェクトはメモリからゴミ収集器GCで自動的に回収される機能を有する.
heap領域におけるインスタンス消去機能
2-1用語集
(1) reference counting algorithm
referencecount=0の場合はGCが優先されます.
例えば、プログラムの最後に、ある変数aが機能しない場合、それを保持しない、a=null;もし私が宣言したら?
GCはaを優先的に処理する.

(2) weak generational Hypothesis
(3) stop-the-world
JVMは、GCを実行するためにアプリケーションの実行を停止します.GC調整とは、これらのStop-the-worldの時間を減らすことです.
(4) generation
-young:minor GCが実行され、作成して間もないオブジェクトが格納されます.
-old:youngより広い空間です.ヤングから生き残った相手のゴール.全GC運転.
-perm:codeがすべて実行された後、oldの生存オブジェクトがpermにある場合、major GCが実行されます.
(5) major GC
間欠的にメモリから回収されるという特徴があります.
(6) Major GC
JVMの動作自体を停止させます.
.
.
.
 Comment.
 단순히 로직만 만들어서 되는게 아니었다.. GC튜닝이라는 세계..
 결국 개발 초기부터 성능을 고려해서 로직을 설계해야,
 빠른 속도, 안전한 코딩이 나오는 것 같다. 
 이것은 프로그램이 어떠한 알고리즘으로 진행되는지를 기본적으로 알아야 가능하다.