안녕하세요. 이번에는 간단하게 JVM의 동작방식에 대해서 알아보겠습니다.
💁🏻♂️ JVM 동작방식
- JVM은 클래스 로더(Class Loader) + 런타임 데이터 영역 (Runtime Data) + 실행 엔진(Execution Engine), 가비지 컬렉터(GarBage Collector)로 구성이 되어 있습니다.
👉🏻 런타임 데이터 영역(Runtime Data Area)
- 런타임 데이터 영역(Runtime Data Area)는 JVM이 프로그램을 수행하기 위해 OS로부터 할당받는 메모리영역입니다. WAS의 성능에 문제가 발생했을 때, 대부분 이 영역들이 원인이 됩니다.(Memory Leak 혹은 GC)
+) 👨🏻🏫 추가 설명 (왜 Web Application Server)에 성능 문제가 발생했을때, 해당 영역이 원인이 되는가?
- 사용이 되는 것처럼 메모리가 해제가 되지 않아 메모리 Leak이 발생되어, GC가 메모리를 수거하지 못해서 힙에 메모리를 꽉차게 되어 문제가 발생합니다.
- 심각할 때는 Out Of Memory가 발생되어 서버가 다운이 됩니다.
👩🏻🏫 설명
- Runtime Data Area는 5가지로 구분됩니다.
1. 메소드 영역(Method Area)
- 클래스 정보, 변수 정보, static으로 선언한 변수가 저장되고 모든 Thread가 공유하는 영역입니다.
2.힙 영역(Heap Area)
- 동적으로 생성된 객체(new)와 배열이 생성되는 영역이며, GC의 대상이 되는 공간입니다.
3. 스택 영역(Stack Area)
- 지역 변수나 메서드의 매개변수, 임시적으로 사용되는 변수, 메서드의 정보가 저장되는 공간입니다.
4. PC Register(레지스터)
- Thread가 시작될 때 생성되며, 현재 수행중인 JVM의 명령어 주소를 저장하는 영역입니다.
- 즉 Thread가 어떤 부분을 어떤 명령어로 수행할지를 저장하는 공간입니다.
5. Native Method Stack(네이티브 메소드 스택)
- Java가 아닌 다른 언어로 작성된 코드를 위한 영역입니다.
- JNI(Java Native Interface)를 통해 호출하는 C/C++등의 코드를 수행하기 위한 영역입니다.
📒 Reference
[JAVA] JVM 동작 원리 및 기본 개념
자바는 OS에 독립적인 특징을 가지고 있다. JVM이 OS와 프로그램의 사이에서 기계어로 행석앻주는 역할을 하기 때문이다. JVM JAVA Virtual Machine 컴파일된 바이트 코드를 기계가 이해할 수 있는 기계
yaelimeee.tistory.com
JVM(Java Virtual Machine) - 2
JVM의 메모리 구조
velog.io
자바 메모리 구조(Runtime Data Area)
■Runtime Data Area Runtime Data Area는 JVM이 프로그램을 수행하기 위해 OS로부터 할당받는 메모리 영역이다. WAS의 성능에 문제가 발생했을 때, 대부분 이 영역들이 원인이 된다. (Memory Leak 혹은 GC) Runtime
jithub.tistory.com
'프로그래밍 언어 > JAVA 환경설치 및 작동 원리' 카테고리의 다른 글
JAVA의 빌드툴 (0) | 2023.06.05 |
---|---|
빌드와 컴파일의 차이 (0) | 2023.06.05 |
자바 프로그램의 실행 원리 (0) | 2022.10.10 |
Mac에서 자바 실행 환경 설정하기 (0) | 2022.10.09 |