JVM이란?
- JAVA Virtual Machine의 약자로 자바와 운영체제 사이에서 중개자 역할을 수행하며, 자바가 운영체제에 구애받지 않고 프로그램을 실행할 수 있도록 도와줍니다.
JVM을 간단히 설명했으니 본론으로 넘어가 JVM 메모리 구조에 대해 설명하겠습니다.
JVM 메모리 구조
- 메모리 구조는 크게 Class Loader,Garbage Collector, Execution Engine, Runtime Data Area로 분류할 수 있습니다
- 클래스 로더가 컴파일러에 의해 바이트코드로 변환된 클래스 파일을 읽어 들이면서 JVM이 수행됩니다.
- Class Loader
자바 바이트 코드를 읽어서 JVM의 실행 엔진이 사용할 수 있도록 동적으로
Runtime Data Area(JVM Memory)의 메서드 영역(Method Area)에 적재하는 역할을 합니다. - Execution Engine
Class Loader에서 읽어들이 Byte 코드를 명령어 단위로 실행시키는 역할을 수행합니다 - Garbage Collector
사용하지 않거나 필요없는 객체들을 메모리에서 소멸시키는 역할을 한다.
Runtime Data Area
- JVM이 프로그램을 수행하기위해 운영체제로부터 할당받은 메모리 공간이다.
- Method Area
Class 정보, 전역변수 정보, Static 변수 정보가 저장되는 공간이다.
Runtime Constant Pool에는 상수정보가 저장된다. - Heap Area
new 연산자로 생성된 객체,Array 같은 동적으로 생성된 데이터가 저장된다.
Reference Type의 데이터가 저장되는 공간. - Stack Area
지역변수, 메소드의 매개변수와 같이 잠시 사용되고 필요가 없어지는 데이터가 저장되는 공간
만약, 지역변수 이지만 Reference Type일 경우에는 Heap에 저장된 데이터의 주소값을 Stack에 저장해서 사용하게 된다.
LIFO(Last In First Out) 방식 - PC Register Area
스레드가 생성되면서 생기는 공간
스레드가 어느 명령어를 처리하고 있는지 그 주소를 등록한다. - Native Method Stack Area
Java가 아닌 다른 언어(C,C++)등으로 구성된 메서드가 실행이 필요할 때 사용되는 공간
'Java' 카테고리의 다른 글
DI(Dependency Injection)이 뭘까? (1) | 2024.01.10 |
---|---|
[Java]#9 개선된 for 문 (1) | 2022.05.31 |
#8 예외 처리(Exception) (0) | 2022.04.17 |
#7 스레드(Thread)가 무엇인가? (0) | 2022.04.17 |
#6 자바 접근 제한자 종류와 차이점 (1) | 2022.04.15 |
댓글