※ 프로그램 실행 시, JVM은 OS에서 할당받은 메모리 영역(Runtime Data Area)을 크게 세 영역으로 구분합니다.
메소드(Static or Method) 영역
- JVM을 시작할 때 생성합니다.
- static 변수, 전역변수, 코드에서 사용되는 클래스 정보 등이 올라가는 영역입니다.
- 코드에서 사용되는 클래스들을 로더로 읽어 클래스 별로 런타임 필드 데이터, 메소드 데이터 등을 분류해 저장합니다.
- 모든 스레드가 공유합니다.
힙(Heap 영역)
- JVM을 시작할 때 생성합니다.
- new 연산자를 통해서 생성된 객체, 배열 등이 저장됩니다.
- 가비지 컬렉션에 의해서 메모리가 관리되어 지는 영역입니다.
스택(Stack) 영역
- 스레드 별로 생성됩니다.
- 지역변수, 함수(메소드) 등이 할당되는 LIFO(Last In First Out) 방식의 메모리 영역입니다.
반응형
'개발자 기술 면접 > JAVA' 카테고리의 다른 글
[JAVA] JAVA 접근 제한자 (0) | 2023.12.29 |
---|---|
[JAVA] JAVA 메모리 관리 기술 (0) | 2023.12.29 |
[JAVA] 제네릭(Generic)이란? (0) | 2023.12.25 |
[JAVA] 추상 클래스와 인터페이스 설명 및 차이 (0) | 2023.12.25 |
[JAVA] Java와 C/C++의 차이점 (0) | 2023.12.25 |