본문 바로가기
자바

자바 JVM - 런타임 데이터 영역

by 개발자 포비 2024. 11. 23.

런타임 데이터 영역

런타임 데이터 영역은 JVM에서 프로그램이 실행되는 동안 필요한 여러 데이터 구조를 포함한다. 이 영역은 크게 메서드 영역, 힙 영역, 쓰레드 영역으로 나뉜다.

1. 메서드 영역

  • 정의: JVM이 읽어 들인 각종 타입 정보, 상수, 정적 변수 정보가 저장되는 공간이다.
  • 기능: JIT(Just-In-Time) 컴파일러가 컴파일된 기계어 코드를 캐싱하는 데도 사용된다.

2. 힙 영역

  • 정의: 객체 및 배열이 저장되는 영역으로, 대부분의 자바 애플리케이션에서 사용된다.
  • 성능 이슈: 힙 영역을 과도하게 사용하게 되면 가비지 컬렉터(GC)의 성능이 저하될 수 있다. 이는 메모리 청소 주체인 GC가 비효율적으로 작동하게 만들어 성능 저하를 초래할 수 있다.

3. 쓰레드 영역

쓰레드 영역은 각 쓰레드가 고유하게 가져야 할 메모리 구조를 포함한다.

  • 구성 요소:
    • 스택 영역: 각 쓰레드마다 고유한 스택을 가진다. 일반적으로 메소드 호출과 지역 변수를 저장하는 데 사용된다.
    • PC 레지스터: 현재 실행 중인 JVM 명령어의 주소를 저장한다.
    • 네이티브 메소드 스택: 네이티브 메소드를 호출할 때 사용하는 스택이다. 기본 스택 영역에서 발생할 수 있는 장애 외에도 네이티브 메소드 스택에서도 장애가 발생할 수 있다.
  • 스택 오버플로우: 재귀 호출 등의 잘못된 사용으로 인해 스택 오버플로우 장애가 발생할 수 있다.

4. 가상 메모리 한계

  • JVM의 동작: JVM은 프로세스이며, JVM 위에서 동작하는 모든 프로그램은 JVM의 가상 메모리에서 실행된다.
  • 메모리 공간의 한계 : 32비트 시스템(x86)의 경우, 가상 메모리는 2^32 바이트(약 4GB)이다. 그러나 커널에서 사용하는 메모리의 절반 가량이 차지하므로, 실제로는 약 2GB 정도의 저장 공간을 사용할 수 있다.

5. 런타임 상수 풀

  • 정의: 클래스 로더가 클래스를 로드할 때, 클래스 버전, 필드, 메서드, 인터페이스 등 클래스 파일에 포함된 정보 및 각종 리터럴, 심볼 참조가 저장되는 공간이다.
  • 특징: 이 영역은 동적으로 운영되며, 런타임에 새로운 상수가 추가될 수 있다.

결론

런타임 데이터 영역은 JVM에서 프로그램이 실행될 때 필요한 다양한 데이터를 저장하고 관리하는 핵심 구조이다. 메서드 영역, 힙 영역, 쓰레드 영역 각각은 프로그램의 효율적인 실행을 위해 중요한 역할을 하며, 이들 간의 상호작용이 프로그램의 성능에 큰 영향을 미친다.

 

https://www.youtube.com/watch?v=5NJVD27noic

런타임 데이터 영역

 

'자바' 카테고리의 다른 글

자바 - 정규화 표현 문법  (0) 2024.11.24
자바 JVM - 힙 영역과 GC  (0) 2024.11.23
자바 JVM - 클래스 로더  (0) 2024.11.23
자바 - JVM  (1) 2024.11.21
자바 - 메모리 관리  (0) 2024.11.21

댓글