__**Java 8 이전과 이후의 메모리 영역 변화**__

개요

  • Java 8 기점으로 격변함
  • Permanent Generation 영역이 사라지게 되고
  • MetaSpace 영역이 등장하였다.

Java8 이전의 메모리 구조

Permanent Generation

  • 정의
    • 클래스의 메타데이터와 상수 풀을 저장하는 영역
  • 특징
    • 힙 영역의 일부였다고 합니다. ㄷ. ㄷ
    • 힙 영역을 나눠 사용하는 것이다 보니, 크기가 제한적이여서
    • 실제로 Java 8 이전에는 OOM 이 발생하는 상황이 더 잦았다고 합니다

Java8 이후의 메모리 구조

MetaSpace == MethodArea

  • 정의
    • Permanent Generation 영역을 대체하기 위해 등장했습니다.
  • 특징
    • Native Memory 에 할당됨
    • 제한된 크기가 없음
    • 메모리 누수 우려가 낮아졌음

STATIC 과 메모리

  • static 변수
    • 클래스 로딩 시점에 메모리에 할당됩니다.
    • Method Area == MetaSpace 에 저장됨.
    • 클래스의 모든 인스턴스에서 공유됩니다
  • 객체
    • new 연산자를 사용
    • 힙 영역에 저장됨.

Uploaded by N2T