Programming/Java

[Java] JVM 구조와 메모리 영역

728x90

 

 

1. JVM 구조

 

 

1.1. 클래스 로더 (Class Loader)

- JVM 내로 클래스파일 (.class) 을 동적으로 로드

- 링크를 통해 메모리에 바이트코드를 배치

    • 메모리에 로딩할 때, 모든 코드를 한번에 올리는 것이 아니라 어플리케이션에서 필요한 경우 동적으로 로딩

 

1.2. 실행 엔진 (Execution Engine)

- 메모리에 로딩된 바이트 코드를 기계어(Binary Code)로 변경하여 명령어 단위로 실행

- 인터프리터(Interpreter)와 JIT(Just-In-Time) 컴파일러 두 가지 방식을 혼합하여 사용

    • Interpreter : 명령어를 하나씩 실행

    • JIT : 바이트 코드 전체를 컴파일하여 Native Code로 변경하여 캐싱해 두었다가 실행

- GC (Garbage Collector)

    • Heap 메모리 영역에서 더 이상 사용하지 않는(참조되지 않는) 메모리를 자동 회수

 

1.3. 런타임 데이터 영역 (Runtime Data Area)

- JVM의 메모리 영역

- 자바 어플리케이션을 실행할 때 사용되는 데이터를 적재하는 영역

- 아래 2. 에서 메모리 영역에 대해 자세히 다뤄볼 것이다!

 

 

 

2. JVM 메모리 영역

JVM 런타임 데이터 영역

 

 

2.0. 메인 클래스 동작과 static / none-static 멤버

1. JVM이 실행할 클래스를 찾는다

2. static 키워드가 붙은 멤버들을 Method Area에 로딩

    - static 멤버클래스 생성 시점메모리에 자동으로 로딩된다

    - none-static 멤버는 객체를 생성하여 메모리에 로딩한 후, 사용해야 한다

    - main 메서드는 static으로 선언하기 때문에 클래스 실행 시점에 메모리에 자동 로딩

3. JVM이 Method Area의 static zone에서 main 메서드를 호출

4. 호출된 메서드를 Stack Area에 push한 뒤 동작 시작

 

2.1. Method Area

- 메서드의 바이트코드가 할당되는 공간 (클래스, 인터페이스 메소드, 필드, static 변수 등)

- static-zone / none-static-zone 으로 나뉜다

- Runtime Constant Pool (Literal Pool) : 상수 값이 할당되는 메모리 공간

 

2.2. Heap Area

- 객체와 배열이 생성되는 메모리 영역 (new 연산자)

- GC(Garbage Collector)에 의해 메모리가 수집된다

 

2.3. Stack Area

- 메서드에서 사용되는 값 + 지역변수, 매개변수 등 임시 데이터 저장

- 메서드 호출 시 마다 스택 프레임 생성

- LIFO 구조

 

2.4. PC Register

- 현재 쓰레드가 실행되는 부분의 주소와 명령 저장

- 쓰레드마다 하나씩 존재하는 영역

- PC(Program Counter) : 현재 실행 중인 프로그램의 주소를 가리킨다

 

2.5. Native Method Area

- Java 외 언어로 작성된 Native 코드를 위한 메모리

 

 

 

 

 

 

 

📌  References

- https://steady-coding.tistory.com/305

 

JVM 메모리 구조란? (JAVA)

안녕하세요? 코딩 중독입니다. 오늘은 JVM 메모리 구조에 대해 알아보겠습니다. JVM이란? JVM 메모리 구조를 설명하기 전에 JVM이 무엇인지 알아야 합니다. JVM은 Java Virtual Machine의 약자로, 자바 가상

steady-coding.tistory.com

- https://inpa.tistory.com/entry/JAVA-%E2%98%95-JVM-%EB%82%B4%EB%B6%80-%EA%B5%AC%EC%A1%B0-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%98%81%EC%97%AD-%EC%8B%AC%ED%99%94%ED%8E%B8

 

☕ JVM 내부 구조 & 메모리 영역 💯 총정리

저번 포스팅에서는 JRE / JDK / JVM에 대해서 간략하게 알아보는 시간을 가졌다면, 이번 포스팅에서는 JVM의 내부 구조에 대해 좀 더 자세하게 알아보도록 할 예정이다. JVM(자바 가상 머신)은 자바 언

inpa.tistory.com

 

 

 

728x90