GC = 가비지 컬렉터
클래스 로더 서브 시스템은 클래스나 인터페이스를 JVM으로 로딩하는 기능을 수행 실행 엔진은 로딩된 클래스의 메서드에 포함되어 있는 모든 인스트럭션 정보를 실행 자바의 메모리 영역은 'Heap 메모리'와 'Non-heap 메모리'로 나뉜다.
Heap 메모리 = 공유 메모리 = 여러 스데드에서 공유하는 데이터들이 저장되는 메모리 Non-heap 메모리 = 자바의 내부 처리를 위해서 필요한 영역 = 주된 영역이 바로 메서드 영역 메서드 영역 : 모든 JVM 스레드에서 공유 JVM 스택 : 스레드가 시작할 때 JVM 스택이 생성 네이티브 메서드 스택 : 자바 코드가 아닌 다른 언어로 된(보통은 C로 된) 코드들이 실행하게 될 때의 스택 정보를 관리 PC 레지스터 : 네이티브한 코드를 제외한 모든 자바 코드들이 수행될 때 JVM의 인스터럭션 주소를 pc 레지스터에 보관
GC의 역할들
- 메모리 할당
- 사용 중인 메모리 인식
- 사용하지 않는 메모리 인식
가비지 컬렉터는 사용하지 않는 메모리를 제거해준다 힙영역에서는 객체들을 담고 있고, 스택 및 메소드와 같은 영역에서는 해당 객체의 주소를 가지고 있다. 메서드가 끝나거나 여러가지 이벤트 들이 일어나 힙 영역 객체의 주소를 가지고 있는 참조 변수가 삭제되면, 더이상 필요없어진 객체들을 가비지 컬렉터가 주기적으로 제거해준다.
