
Class Loader : JVM 내로 Class 파일의 바이트코드를 읽어 런타임 데이터 영역으로 가져온다. 런타임시 동적으로 클래스를 로드한다. 사용하지않는 클래스들을 메모리에서 삭제한다.
클래스를 처음으로 참조할때, 클래스를 로드하고 링크.
Execution Engine : 클래스로더가 배치한 클래스를 실행시키는 역할. 바이트코드를 기계가 실행할 수 있는 형태로 변환시킨다.

PC Register : Thread가 시작될때마다 생성되며 스레드마다 1개씩 존재. Thread가 어느부분에서 어떤 명령을 실행해야할지에 대한 기록을 한다. 현재수행중인 JVM의 명령의 주소(위치)를 가짐.(멀티쓰레드 환경에서 다시 돌아갈위치를 가져야하기때문)
JVM Stack : 메서드연산에 필요한 지역변수, 파라미터, 리턴 값, 연산에 사용되는 임시 값을 저장한다 해당 메서드연산이 종료될시 삭제된다.
Native method stack : JAVA언어가 아닌 다른언어로 작성된 코드를 위한 공간
Method Area (= Class area = Static area) : 클래스정보를 메모리공간에 올릴때 초기화되는 대상을 저장하기 위한 메모리공간. 클래스, 인터페이스, 메소드, 필드, Static 변수 등의 바이트 코드를 보관.
Runtime Constant Pool이라는 별도의 관리 영역도 함께 존재한다. 이는 상수 자료형을 저장하여 참조하고 중복을 막는 역할을 수행한다.
Heap : 객체를 저장하는 가상메모리 공간. new연산자로 생성된 객체, 배열을 저장한다.
class 영역에 있는 클래스들의 객체만 생성할수 있다.

하나의 Survivor 영역이 가득 차게 되면 그 중에서 살아남은 객체를 다른 Survivor 영역으로 이동한다. 그리고 가득 찬 Survivor 영역은 아무 데이터도 없는 상태로 된다.

Major GC : Old 영역에잇는 '모든' 객체를 검사하여 참조되지않은 객체들은 한꺼번에 삭제한다.
시간이 오래걸리며, 실행중 프로세스가 정지된다.(Stop-the-world) GC를 실행하는 스레드 제외 모든 스레드가 작업을 멈춘다. (성능이슈 원인중 하나)
Permanent Generation 영역은 Method Area라고도 한다. 객체나 억류(intern)된 문자열 정보를 저장하는 곳이며, Old 영역에서 살아남은 객체가 영원히 남아 있는 곳은 절대 아니다. 이 영역에서 GC가 발생할 수도 있는데, 여기서 GC가 발생해도 Major GC의 횟수에 포함된다.