해결된 질문
작성
·
164
0
10분 24초에 클래스를 로딩하기에 앞서서 검사, 준비, 해결과정을 거친다고 하셨는데 로딩을 한 후 링킹(검사,준비, 해결)과정을 수행하는 것이 아닌가요? 로딩전 링킹과정 후 로딩을 하는 것인가요? 제가 잘못이해하고 있는 것인지 궁금합니다
답변 2
0
'로딩'이라는 말은 개념적으로 여러 곳에 사용됩니다. 강의 중 제가 언급하는 로딩은 링킹을 포함한다고 보시면 되겠습니다. 따라서 로딩 후 링킹하는 것이 아니라 링킹을 포함해 로딩과정이 완성되는 것입니다. 물론 로딩을 클래스 파일을 메모리로 읽어들이는 정도로 의미를 제한 할 수 있습니다. 즉, '메모리에 로딩 후'라는 표현을 줄여 '로딩'으로 말 할 수 있습니다.
이런 내용들이 섞이면서 혼선이 있었던 것이 아닌가 싶습니다. 안타깝지만 이런 부분에 대해 Java 가상 머신 명세에서도 명확히 구분되고 있지 않습니다.
정리하면...
1. 로딩은 .class 파일을 파일 시스템에서 읽어오는 것을 말하는 것일 수 있음
2. JVM에서 클래스 로딩은 링킹 과정을 포함하며 링킹 과정은 실패할 수 있음
3. 링킹 실패는 로딩 실패와 같은 의미로 볼 수 있음
참고하시기 바랍니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다. 김민정님, “기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM” 강의에서 언급하신 클래스 로딩 순서에 대한 질문에 대해 답변드리겠습니다.
Java에서는 클래스 로딩 절차가 명확히 정의되어 있습니다. 이 절차는 클래스가 처음으로 참조될 때 수행되며, 주요 단계는 다음과 같이 진행됩니다:
로딩(Loading): 클래스 파일이 JVM에 로드되어 메모리에 적재됩니다. 이 단계에서 클래스 파일의 바이너리 데이터가 JVM에 전달되며, 정의된 클래스에 대한 Class
객체가 생성됩니다.
링킹(Linking): 로딩된 클래스가 사용할 수 있도록 준비하며, 여기에는 세 가지 하위 단계가 포함됩니다:
초기화(Initialization): 정적 초기화 블록과 정적 필드 초기화가 실행됩니다.
따라서, 말씀하신 “로딩 전 링킹과정”은 잘못된 이해로 보이며, 실제로는 로딩이 선행되고 그 후에 링킹이 수행되는 것이 맞습니다. 즉, 클래스를 먼저 로드한 후, 검사, 준비, 해결의 링킹 과정을 거치게 됩니다.
아래의 링크는 이 과정에 대한 자세한 설명이 담긴 질문이니 참고하시기 바랍니다:
- Java 클래스 로딩 및 초기화 과정 이해하기
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.