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 자체의 코드와 내부 구조, 로드된 프로피일러 에이전트 코드와 데이터 등을 저장하기 위해 사용.

침고 : https://shinjekim.github.io/java/2020/01/06/%EC%9E%90%EB%B0%94%EC%9D%98-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0/

반응형

'프로그래밍 > 면접대비문제' 카테고리의 다른 글

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

+ Recent posts