JVM(Java)의 메모리 구조
JVM의 메모리 구조는 힙 메모리 / 비 힙메모리 / 기타 세가지로 나뉜다.
힙 메모리(Heap memory)
- 힙영역은 자바 클래스의 인스턴스와 배열이 할당되는 영역
- Run Time시 데이터를 저장.
- JVM이 시작될때 생성되어 어플리케이션 실행동안 크기가 변동된다.
- 힙영역의 크기는 -Xms VM option 으로 지정된다.
- 힙영역의 크기는 가비지 컬렉션의 전략에따라 고정 / 변동 적으로 설정이 가능하다.
- 힙영역의 퇴대크기는 Xms option으로 설정한다. 디폴트는 64MB이다.
- 힙영역은 물리적으로 nursery(young space / young generation) 파트와 old space(old generation) 두 부분으로 나뉜다.
- nursery : 새로운 객체 할당을 위해 확보된 공간. 이곳이 가득차면 young collection을 실행하여 가비지를 수집한다. young collection은 nursery에 어느정도 모문 객체를 old space로 이동시켜서 nursery에 더 많은 객체를 할당할 수 있도록 한다. 이런 가비지 컬렉션을 Minor GC라고한다.
비 힙 메모리(Non-Heap memory)
- Heap과 마찬가지로 JVM시작시 생성된다.
- 런타임 상수 풀, 필드 및 메소드 데이터같은 크래스별 구조와 메소드 및 생성자에 대한 코드, 나부 문자열이 저장된다.
- 디폴트 크기는 64M, XX:MaxPermSize VM Option을 이용해서 변경 가능
기타 메모리
- JVM 자체의 코드와 내부 구조, 로드된 프로피일러 에이전트 코드와 데이터 등을 저장하기 위해 사용.
반응형
'프로그래밍 > 면접대비문제' 카테고리의 다른 글
Interface VS Abstract (0) | 2021.01.11 |
---|---|
WAS의 동작방식 (0) | 2021.01.11 |
DB정규화 (0) | 2021.01.11 |
MVC란? (0) | 2021.01.11 |
Java Collection framework interface의 특징 (0) | 2021.01.11 |