개요
Java의 엔진인 JVM의 메모리 영역에 대해 한번 간단하게 알아보자.
JVM
간단히 설명하자면 Java 바이트 코드를 기계어로 번역해서 어느 시스템에서나 동작할 수 있도록 하는 엔진. 쉽게 말하면 번역기.
JVM 작업 유형
- 코드 로드
- 코드 확인
- 코드 실행
- 사용자에게 런타임 환경을 제공
ClassLoader
클래스 파일을 로드하는데 사용되는 JVM의 하위 시스템입니다. 주로 세가지 작업을 담당
- 로딩(loading)
- 연결(linking)
- 초기화(initialization)
메모리 영역 유형
- 출처 : https://www.geeksforgeeks.org/how-many-types-of-memory-areas-are-allocated-by-jvm/
1. Class(Method) Area
클래스 코드, 변수 코드, 메소드 코드, 생성자를 저장하는 메모리 영역. 런타임 상수 Pool, 필드 및 메서드 데이터, 메서드 코드와 같은 모든 클래스의 클래스 level 데이터를 저장
2. Heap
객체 생성 및 저장 메모리 영역. 클래스 인터페이스와 배열에 메모리를 할당. 객체에 메모리 할당.
3. Stack
스레드에 각각 Stack이 있습니다. 메소드에 대한 값을 반환, 동적 링크를 수행하는 동안 필요한 데이터 및 부분 결과를 저장. 프레임을 저장하고 메서드를 호출할 때마다 새 프레임이 생성. 메서드 호출이 완료되면 프레임이 소멸.
4. Program Counter Register
non-native 메소드는 사용 가능한 JVM 명령어의 주소를 저장하는 PC를 가지고 있는 반면, native 메소드에서는 프로그램 카운터의 값이 정의되지 않습니다. PC 레지스터는 특정 플랫폼에 반환 주소 또는 기본 포인터를 저장할 수 있습니다.
5. Native Method Stack
C 스택이라고도 함. Java 언어로 작성되지 않습니다. 스레드가 생성될 때 각 스레드에 할당되며 고정되거나 동적일 수 있습니다.
마무리
www.geeksforgeeks.org 여기서 잘 보고 가져왔습니다. 고맙습니다.