.java 컴파일러가
.class 라는 바이트 코드로 바꾸어 준다.
ClassLoad 라는 항목은 .class 바이트코드를 모아서 Runtime Data Area 항목에 로드 시킨다.
모든 스레드는 MethodArea, Heap Area를 공유한다.
Stack Area, Program Counter Register, Native Method Stack 스레드 하나당 하나가 생성된다.
Method Area - 클래스 정보, 변수 정보, static 선언한 변수
Heap - 동적으로 생성된 객체가 저장되는곳 GC의 대상이 되는곳 레퍼런스 타입
Mark And Sweep 가비지 컬렉터 알고리즘 정리 필요
Stack - 지역변수 메서드 매개변수, 임시적으로 사용되는 변수 메서드의 정보
PC Register - 운영체제에 PC Register 항목을 말하는 것이 아니라 Thead가 현재 실행중인 JVM 명령어를 나타
낸다.
Native Method Stack - C/ C++ 를 실행 하기 위한 코드의 공간 JNI(Java Native Interface) 통해 호출하는 되는 것


Execution Engine
Runtime Area Data 영역에 저장된 바이트코드가 Execution Engine 을 통해서 해석될 차례다.
로드된 바이트코드를 실행하는 엔진
여기서 바이트 코드를 기계어로 바꾸는 작업이 필요한데
Interpreter
JIT Compiler
이제 이렇게 기계어로 해석된것이 다시 Runtime Data Area에 적제된다.
스레드 동기화, 가비지 컬렉션이 작업되게 된다.
Native Method Interface
Native Method Libraies