인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Seokwon Kang님의 프로필 이미지
Seokwon Kang

작성한 질문수

기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM

세대별 컬렉션 이론

metaspace 관련 문의드립니다.

해결된 질문

작성

·

37

0

안녕하세요. 좋은 강의라 너무 잘 듣고 있습니다.

metaspace 관련하여 궁금한 점이 있습니다.

 

"세대별 컬렉션 이론" 강의 - 13:00의 heap 영역 그림을 보시면,

metaspace가 heap 영역 내부에 포함이 되어있는데,

자바 8버전 이후로 Permanent Generation 영역이 metaspace로 변경되면서 heap 내부가 아니라 네이티브 메모리로 넘어간게 아닌가요? -XX:MaxPermSize 옵션도 없어진 것으로 알고 있습니다.

 

관련 내용 확인 부탁드립니다.

감사합니다. :)

답변 2

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

생각하시는 것처럼 Metaspace는 Heap 영역은 아닙니다. 다만, 개념적으로 묶어서 설명하는 것이 바람직하다 판단했습니다. 슬라이드 제목에 '힙 영역'이라는 표현이 있어서 그렇게 보신 것 같습니다. 생각하시는 것처럼 메타스페이스는 네티브 메모리를 사용합니다. 이에 대해서는 25:30부터 설명하고 있습니다.

그리고 알려주신 옵션은 -XX:MaxMetaspaceSize로 변경된 것이 맞습니다. 잘못된 내용입니다. 우선 자료를 수정해 바로 잡도록 하겠습니다. 제보 고맙습니다. 😄

Seokwon Kang님의 프로필 이미지
Seokwon Kang
질문자

확인 감사합니다.

좋은 강의에 감사드립니다.

0

안녕하세요, 인프런 AI 인턴입니다. Seokwon Kang님, “기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM” 강의에서 제공된 정보에 대해 질문 주셔서 감사합니다.

먼저, 자바 8부터 Permanent Generation(PermGen)이 제거되고 Metaspace로 변경된 것은 맞습니다. PermGen은 주로 클래스 메타데이터를 저장하기 위해 사용된 영역으로, 자바 8에서는 네이티브 메모리인 Metaspace로 대체되었습니다.

다음은 Metaspace에 대한 주요 설명입니다:

  1. Metaspace는 네이티브 메모리 영역입니다. 이는 기본적으로 운영 체제의 네이티브 메모리를 사용하므로, JVM과 분리된 메모리 공간에서 관리됩니다. 따라서 heap 영역 내부에 포함되지 않으며, Metaspace는 우리의 JVM 설정에 따라 자동으로 확장됩니다.

  2. MaxPermSize 옵션은 자바 8에서부터 사라졌고, 대신 Metaspace의 최대 크기는 -XX:MaxMetaspaceSize 옵션을 통해 설정할 수 있습니다. 이 점도 과거와의 중요한 차이점 중 하나입니다.

강의에서 제공된 자료가 혼란을 줄 수 있는 부분이 있었다면, 이는 확실히 명확히 해야 할 부분입니다. Metaspace가 heap의 일부가 아님을 다시 한번 확인하는 것이 중요합니다.

관련해서 추가로 설명이 필요하다면, Java 메모리 구조와 Metaspace 개념 관련 자료나 추가 강의 내용을 참고하시기를 권장드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변과 함께 유사한 정보 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서도 답변해 주실 것입니다.

Seokwon Kang님의 프로필 이미지
Seokwon Kang

작성한 질문수

질문하기