JAVA 메타스페이스란??
2025. 9. 17. 13:29

Java 8부터 도입된 메모리 영역

 

이전 버전(Java 7까지)에서는 클래스 메타데이터를 PermGen(Permanent Generation) 영역에 저장했는데, Java 8부터는 PermGen이 제거되고 Metaspace라는 새로운 영역이 도입

 

특징

  1. 클래스 메타데이터 저장소
    • JVM이 로딩한 클래스의 메타데이터(클래스 구조, 메소드, 필드 정보 등)를 저장하는 영역이에요.
  2. PermGen과의 차이점
    • PermGen은 JVM 힙 메모리 내부에 있었지만,
    • Metaspace는 **네이티브 메모리(native memory, OS 메모리)**를 사용해요.
      → 즉, JVM 힙 크기와는 별개로 운영체제 메모리를 사용하기 때문에 PermGen보다 더 유연해졌어요.
  3. 자동 확장 가능
    • 기본적으로 제한이 없어서, 필요할 때마다 OS 메모리에서 가져와 확장돼요.
    • 단, 무한정 늘어나면 OutOfMemoryError(java.lang.OutOfMemoryError: Metaspace)가 발생할 수 있어요.
  4. 튜닝 가능
    • -XX:MetaspaceSize : 초기 Metaspace 크기
    • -XX:MaxMetaspaceSize : 최대 Metaspace 크기 제한

'Java' 카테고리의 다른 글

자바 8 / 17 / 21 버전별 차이점  (0) 2025.06.04
Junit  (0) 2024.12.05
Log4j 란 ??  (0) 2024.12.03
JDBC-Controller  (0) 2024.10.25
JDBC-DAO  (0) 2024.10.25