(1) Platform Independence - Java applications are compiled into bytecode which is stored in class files and loaded in a JVM. Since applications run in a JVM, they can be run on many different operating systems and devices.
(2) Object-Oriented - Java is an object-oriented language that take many of the features of C and C++ and improves upon them.
(3) Automatic Garbage Collection - Java automatically allocates and deallocates memory so programs are not burdened with that task.
기계어
로 변환Hotspot JVM
: Java 1.3부터는 Hotspot VM이 추가되었고, Hotspot VM에는 2개의 JIT 컴파일러(c1, c2)가 포함되어 있다.GraalVM
: JIT 컴파일러들 중에서 기존의 c++로 작성된 C2 컴파일러인 Graal 컴파일러를 Java 기반으로 새롭게 작성된 VM성능 튜닝을 위한 JVM component
힙(heap)
은 오브젝트 데이터가 저장되는 곳입니다.가비지 컬렉터
를 선택하는 것과 관련이 있다. mark-and-sweep algorithm
(old GC)Step 1: Marking
Step 2: Normal Deletion
Step 2a: Deletion with Compacting
stop the world
: 작업이 완료될 때까지 모든 애플리케이션 스레드가 중지됩니다.
(minor, major GC 모두 해당)
card table
card table
: Old 영역에 있는 객체가 Young 영역의 객체를 참조할 때마다 정보가 표시Mark-Summary-Compaction
알고리즘 사용해당 영역이 꽉 차면 다른 영역에서 객체를 할당하고 GC를 실행한다.
(Young, Old 영역과는 아예 다르다.)