- .java .class
- 자바 컴파일러를 통하여 .java를 컴파일하여 .class 파일인 바이트코드로 변환
- Class loader
- Class Loader는 변환시킨 .class 코드를 Runtime Data Area(JVM 메모리 영역)으로 로딩시킴
- Method Area
- 클래스, 변수, static으로 선언한 변수 정보가 저장되어 있고 모든 스레드 영역에서 공유
- Heap
- 동적으로 생성된 객체가 저장되는 영역이고, GC(Garbage Collection)의 대상이 되는 공간
- Stack
- 지역변수나 메소드의 매개변수, 임시적으로 사용되는 변수나 메소드의 정보가 저장되는 공간
- PC Register
- 현재 수행중인 JVM 명령어 주소를 저장하는 공간, 스레드가 어떤 부분을 어떤 명령어로 수행할지를 저장하는 공간
- Native Method Stack
- JAVA가 아닌 다른 언어로 작성된 코드를 위한 공간
- Execution Engine
- Class Load에 의해 로드된 클래스 파일의 바이트 코드들을 실행
- 기계어로 해석한 뒤 JVM 메모리 영역에 배치되어 스레드 동기화나, 가비지 컬렉션을 수행
- Interpreter
- JIT Compiler
- Garbage Collector
- 메모리 관리 기능을 자동으로 수행한다
- 애플리케이션이 생성한 객체의 생존 여부를 파악하여 사용되고 있지 않은 객체의 메모리를 해제한다