기초 : 자바 프로그램 실행과정, JVM
by EunHye Jung
자바 프로그램 실행과정
-
JRE는 자바 API와 JVM으로 구성되며, JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 들여서 자바 API와 함께 실행하는 것임.
- 자바 프로그램을 컴파일하면, JVM은 클래스 로더를 이용해서 컴파일된 바이트 코드를 메모리로 읽어들인다.
클래스로더에 의해 바이트코드가 런타임 데이터 영역(Runtime Data Area)에 올라가게 되면
실행 엔진(Execution Engine)이 바이트코드를 한줄씩 실행시킨다. - JVM의 메모리 구조는 활용 용도에 따라 여러 영역으로 구분되어 있는데, 메소드, 스택, 힙 영역이 프로그래밍과 밀접환 관련이 있다.
JVM 메모리 구조
메소드 영역 (Method Area)
- 런타임시 생성된 모든 스레드가 공유하는 영역
- JVM이 기본적으로 할당받는 메소드 영역의 메모리 사이즈는 일정하게 정해져 있다.
(이 범위를 벗어나게 되면 OutOfMemory 에러가 발생)
스택 영역(Stack Area)
- 스택 영역에는 메소드 정보, 지역변수 정보, 파라미터 값 등이 저장됨.
- 메소드가 호출되면 슽개 프레임이라는 자료구조가 생성되고, 실행 순서에 따라 스택 동작을 수행하다가, 모든 동작이 완료되면 메모리에서 사라진다.
힙 영역 (Heap Area)
- New라는 키워드로 생성된 객체를 저장하는 영역
- 런타임시 생성되는 객체를 저장하는 공간, 자바에서 가비지 컬렉션이 수행되는 영역
cf) 가비지 컬렉션
: 불필요한 메모리 공간을 정리하는 역할을 담당하는 역할
Subscribe via RSS