1) 프로그램이 실행되면, JVM이 OS로부터 메모리를 할당 받음
2) 자바 컴파일러가 자바 바이트 코드(.class)로 변환
3) 변경된 파일들을 class loader를 통해 JVM 메모리 영역(Runtime Data Area)으로 로딩 함
class loader
: 런타임 시 클래스들을 로딩시키며, 메모리에 로드 함
4) 로딩 된 class 파일들을 해석
5) 해석 된 바이트 코드는 메모리 영역에 배치되어 수행 됨
⇒ 이러한 과정을 거치며, JVM은 필요에 따라 스레드 동기화, 가비지 컬렉션 같은 메모리 관리 작업 수행
: JVM이 할당받은 메모리 영역
동적으로 생성된 객체(new 연산자로 생성 된)가 저장 됨
참조하는 변수가 없어지면 의미 없는 객체가 되어 GC의 대상이 됨
Garbage Collector (GC)
: 프로그램이 동적으로 할당했던 메모리 영역 중 필요 없게 된 영역을 해제하는 기능
모든 스레드에서 공유