해결된 질문
작성
·
103
·
수정됨
0
널널한 개발자님. 항상 잘 듣고 있습니다! 좋은 강의 감사합니다.
복습을 하던 도중 잘 이해가 안되는 부분이 있어 질문드립니다.
인스턴스의 메타데이터라 함은 강의 내용 중 해시코드, 오브젝트 나이, 락플래그를 말하는 것 같습니다.
강의 4분경에서 이런 메타데이터가 Klass word에서 참조하는 Metaspace에 저장되어 있다고 하셨습니다.
그리고 강의 6분경 핫스팟 VM 객체 Lock flag슬라이드 보거나, 실제 예제를 실행시켜 나온 결과(23:35)를 보면 Markword에도 해쉬파일과 락플래그가 있는 것으로 보입니다.
Metaspace, Markword 둘 다 같은 인스턴스의 해시코드값(+락플래그)을 가지는 건가요? 그러면 Metaspace는 생성된 인스턴스 모두의 메타데이터를 가지는건가요?
새벽에 보느라 머리가 잘 안돌아가네요..
긴 글 읽어주셔서 감사합니다!
답변 2
0
그림이 잘못된 것이 맞습니다. 분리해서 표시했어야 했는데 묶어서 그리면서 혼란을 드린 것 같습니다. 해서 그림을 다음과 같이 수정했습니다.
(해시 코드, 나이, 락 플래그 등은 모두 Mark word 안에 담기는 정보입니다.)
중요한 이슈에 해당하므로 해당 차시는 조속히 다시 촬영해 올리도록 하겠습니다. 오류 제보에 감사드리며 현재 제작 중인 Part 3를 무료로 보실 수 있도록 제공하겠습니다. 인프런 가입 메일 계정을
cx8537@naver.com으로 보내주세요. Part 3 오픈과 동시에 수강자로 등록하겠습니다.
감사합니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다. cby9017님, “기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM” 강의와 관련된 질문을 주셔서 감사합니다.
자바에서 인스턴스의 메타데이터는 객체의 상태를 관리하는 중요한 요소입니다. 이 정보는 JVM이 객체를 효율적으로 관리하고 작동시키는 데 도움을 줍니다. 이를 이해하기 위해 Markword와 Metaspace의 역할을 좀 더 구체적으로 살펴보겠습니다.
Markword:
Metaspace:
따라서, Metaspace는 인스턴스가 아닌 클래스에 대한 메타데이터를 보관하며, Markword는 본래 인스턴스의 일부로서 인스턴스에 특화된 정보를 갖고 있으므로, 인스턴스마다 별개로 저장됩니다.
정리하자면, 인스턴스의 해시코드와 락 플래그는 Markword에 저장되며, Metaspace는 클래스 수준의 정보를 관리합니다. 인스턴스 자체의 메타데이터가 Metaspace에 저장되는 것은 아닙니다.
관련하여 더 깊이 있는 설명을 원하신다면, 아래의 링크를 참고하시면 유익할 수 있습니다:
- JVM Markword의 구조와 역할
- Java 클래스 로딩과 Metaspace에 관한 이해
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
그렇군요. 올리시면 다시 보겠습니다.
메일 보냈습니다. 감사합니다!