제이제이
article thumbnail

 

안녕하세요. 이번에는 간단하게 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

 

profile

제이제이

@아사비치즈스틱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!