<aside>
<aside>
JVM 전체 구조의 흐름을 보면,
Class Loading → 메모리 적재(Runtime Data Area) → 실행(Execution Engine)
순서로 흐른다.
그러면 당연히 Class Loading
을 처음으로 다뤄야 하지 않나? 라는 의문이 생길 수 있다.
Class Loading
은 클래스를 메모리에 올리는 과정 까지만 다루고, 실제로 메모리에 올라간 이후 어디에 어떻게 적재돼서 어떻게 실행준비를 하는지는 Runtime Data Area가 관여한다
그래서 JVM의 전체 흐름을 잡을 때는 ‘Class를 올린다’ 보다 ‘메모리에 어떻게 올라가고, 거기서 어떤 일이 벌어지는지’를 먼저 이해하는게 흐름을 이해하기에 쉽다
(Class Loader만 먼저 깊게 파면 흐름이 끊길 수도 있음)
JVM을 이해한다는 건 결국 "코드가 실행될 때 내부에서 무슨 일이 벌어지는지"를 이해하는 것이다.
그리고 이 과정은 단순히 클래스를 로딩하는 걸로 끝나지 않는다. 따라서 Class Loader보다, 먼저 메모리 구조와 실행 메커니즘을 이해하는 것이 흐름을 놓치지 않는 가장 좋은 출발점이다.
이번 편에서는 JVM의 Runtime Data Area를 구성하는 핵심 구역들을 하나씩 깊게 들여다보며, 메모리와 실행 흐름을 제대로 잡아보려한다!
</aside>
런타임 데이터 영역은 쉽게 말하면 JVM의 메모리 영역으로, 자바 애플리케이션을 실행할 때 사용되는 데이터들을 적재하는 영역이다
런타임 데이터 영역은 위 그림과 같이 크게
으로 나눌 수 있다.
Method Area
, Heap Area
는 모든 Thread가 공유하는 영역이고,