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

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

bynull님의 프로필 이미지
bynull

작성한 질문수

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

객체 메모리 레이아웃과 해시코드

메타데이터의 위치에 대한 질문입니다.

해결된 질문

작성

·

103

·

수정됨

0

널널한 개발자님. 항상 잘 듣고 있습니다! 좋은 강의 감사합니다.

 

복습을 하던 도중 잘 이해가 안되는 부분이 있어 질문드립니다.

인스턴스의 메타데이터라 함은 강의 내용 중 해시코드, 오브젝트 나이, 락플래그를 말하는 것 같습니다.

강의 4분경에서 이런 메타데이터가 Klass word에서 참조하는 Metaspace에 저장되어 있다고 하셨습니다.

그리고 강의 6분경 핫스팟 VM 객체 Lock flag슬라이드 보거나, 실제 예제를 실행시켜 나온 결과(23:35)를 보면 Markword에도 해쉬파일과 락플래그가 있는 것으로 보입니다.

Metaspace, Markword 둘 다 같은 인스턴스의 해시코드값(+락플래그)을 가지는 건가요? 그러면 Metaspace는 생성된 인스턴스 모두의 메타데이터를 가지는건가요?

 

새벽에 보느라 머리가 잘 안돌아가네요..

긴 글 읽어주셔서 감사합니다!

 

답변 2

0

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

그림이 잘못된 것이 맞습니다. 분리해서 표시했어야 했는데 묶어서 그리면서 혼란을 드린 것 같습니다. 해서 그림을 다음과 같이 수정했습니다.

(해시 코드, 나이, 락 플래그 등은 모두 Mark word 안에 담기는 정보입니다.)

독하게 시작하는 Java 프로그래밍 - Part 2.png

 

중요한 이슈에 해당하므로 해당 차시는 조속히 다시 촬영해 올리도록 하겠습니다. 오류 제보에 감사드리며 현재 제작 중인 Part 3를 무료로 보실 수 있도록 제공하겠습니다. 인프런 가입 메일 계정을
cx8537@naver.com으로 보내주세요. Part 3 오픈과 동시에 수강자로 등록하겠습니다.
감사합니다. 😄

 

bynull님의 프로필 이미지
bynull
질문자

그렇군요. 올리시면 다시 보겠습니다.

메일 보냈습니다. 감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. cby9017님, “기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM” 강의와 관련된 질문을 주셔서 감사합니다.

자바에서 인스턴스의 메타데이터는 객체의 상태를 관리하는 중요한 요소입니다. 이 정보는 JVM이 객체를 효율적으로 관리하고 작동시키는 데 도움을 줍니다. 이를 이해하기 위해 Markword와 Metaspace의 역할을 좀 더 구체적으로 살펴보겠습니다.

  1. Markword:

    • Markword는 객체 헤더의 일부로, 자바 객체의 내부에 포함되어 있습니다.
    • Markword는 해시 코드(hash code), 락 플래그(lock flags), GC 상태 정보, 스레드의 잠금 및 언락 정보 등을 포함하고 있습니다.
    • 객체 자체에 존재하며, JVM의 효율적인 동시성 및 GC 구현에 필수적입니다.
  2. Metaspace:

    • Metaspace는 JVM의 네이티브 메모리 영역으로, 클래스 메타데이터를 저장합니다.
    • 인스턴스가 아닌 클래스 수준의 정보를 포함하고 있습니다. 따라서 인스턴스 자체의 데이터인 해시코드나 락 플래그는 Metaspace에 포함되지 않습니다.

따라서, Metaspace는 인스턴스가 아닌 클래스에 대한 메타데이터를 보관하며, Markword는 본래 인스턴스의 일부로서 인스턴스에 특화된 정보를 갖고 있으므로, 인스턴스마다 별개로 저장됩니다.

정리하자면, 인스턴스의 해시코드와 락 플래그는 Markword에 저장되며, Metaspace는 클래스 수준의 정보를 관리합니다. 인스턴스 자체의 메타데이터가 Metaspace에 저장되는 것은 아닙니다.

관련하여 더 깊이 있는 설명을 원하신다면, 아래의 링크를 참고하시면 유익할 수 있습니다:
- JVM Markword의 구조와 역할
- Java 클래스 로딩과 Metaspace에 관한 이해

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

bynull님의 프로필 이미지
bynull

작성한 질문수

질문하기