Java 코드가 어떤 플랫폼에서도 동작할 수 있도록(특정 플랫폼에 종속되지 않는) 하는 가상 머신이다.
.java
를 컴파일러가 .class
로 컴파일 하고, 이를 JVM이 기계코드로 변환하여 실행한다.
Java Development Kit의 약자
말그대로 자바 개발을 위한 유용한 툴들을 제공하는 kit
Java Runtime Environment
자바 런타임 환경 구성을 위한 구성 요소만 포함된 것
Just In Time의 약자
컴파일 방식이고, JVM으로 기계 코드를 만드는 부분을 JIT이 수행한다.
Java Naming And Directory Interface 약자
어떤 객체를 쉽게 찾을 수 있도록 도와주는 것
메모리 관리 방식
heap 영역을 나누어, 해당 메모리가 쓰이지 않는다면 메모리 자동 해제 해주는 것
GC의 과정은
1. 객체가 생성되면 Heap에 Eden 영역에 저장
2. Eden이 꽉차면 Survivor로 복사한 후, 다시 Eden을 채움
3. Survivor영역에 꽉차면, 다른 Survivor 영역으로 객체가 복사된다.
4. 위 부분이 Yong GC이고 추후에 Old GC로 이동되고 자연스럽게 메모리에서 해제된다.