반응형
▶ 메소드 영역 (Static)
JVM이 읽어드린 클래스와 인터페이스, 상수(Primitive), 멤버변수, 클래스변수(Static) 생성자와 메소드 정보 저장
JVM 시작 시 생성, 프로그램 종료 또는 명시적 null 선언 시 까지, 모든 쓰레드에서 공유
GC 방법은 JVM 벤더마다 다름
▶ 힙 영역 (Heap)
JVM이 데이터를 저장하기 위해 런타임에 동적으로 할당하여 사용
New 연산자로 생성된 객체와 배열 저장
힙 영역에서 생성된 객체와 배열은 스택 영역의 변수나 다른 객체의 필드에서 참조
참조하는 변수나 필드가 없다면 GC의 대상, 모든 쓰레드에서 공유
GC 방식은 JVM 벤더마다 다를 수 있음
- Young Generation:
- 자바 객체가 생성되자 마자 저장, 시간이 지나 우선순위 낮아지만 Old 영역으로 이동
- 이 영역에서 객체가 사라질 때, Minor GC 발생
- Old Generation:
- Young 영역에 저장되었던 객체가 오래되어 이동한뒤 저장되는 영역
- 이 영역에서 객체가 사라질 때, Major GC 발생 (Fulil GC)
- Permanent Generation:
- 클래스 로더에 의해 로드되는 클래스, 메소드에 대한 메타정보 저장
- 리플렉션을 사용하여 동적으로 클래스 로딩되는 경우 해당, Spring 이용 시 고려 필요
▶ 스택 영역 (Stack)
쓰레드 마다 하나씩 존재, 쓰레드가 시작될 때 할당
스택 구조로, 선입후출
메소드정보, 지역변수, 매개변수, 연산 중 발생하는 임시 데이터 저장
기본(Primitive)타입은 스택 영역에 직접 저장
참조 타입(객체) 변수는 힙 영역이나 메소드 영역의 객체 주소 가짐
- PC레지스터
- 현재 수행중인 JVM 명령 주소 가짐
▶ Native Method Stack 영역
자바 외 언어로 작성된 네이티브 코드 위한 Stack
JNI(Java Native Interface)를 통해 호출되는 코드 수행하기 위한 스택
반응형
'IT > Etc.' 카테고리의 다른 글
[프로그래머스] 카운트 업 Java (0) | 2024.08.19 |
---|---|
[SQL Injection] (0) | 2024.08.19 |
501 command helo requires an argument Syntax error (0) | 2023.03.02 |
[CSS] 기초 / CSS 연결 link / import 차이 (0) | 2023.02.22 |
리눅스(Linux) su / su - / sudo 명령어, 차이 (2) | 2021.05.02 |