클래스 로더가 로딩 + 링크 + 초기화를 모두 한다는 오해
Java·2026. 5. 31.
요새 JVM을 공부하는 중인데... 레퍼런스를 계속 찾아다보다 보니 클래스 로더가 로딩, 링크, 초기화를 모두 수행한다는 레퍼런스들이 많았다. openjdk 25 소스코드를 직접 풀 받아서 분석하는 중인데, 클래스 로더가 모두 맡는다는 것은 오해다.정확히 말하면 클래스 로더는 로딩과 링크 일부만 맡아서 하고, 초기화는 실행 엔진이 수행한다.왜 이런 결론이 나왔는지, 직접 소스코드를 보면서 확인해보겠다. 초기화는 언제 발생하는가?로딩의 경우에는 JVM 명세에 정확히 명시되어있지 않다. JVM을 구현하는 곳마다 자유롭게 구현할수 있다는 뜻이다.단, 초기화는 정확히 명시되어 있다.new, getstatic, putstatic, invokestatic 명령어를 만났을 때, 타입이 초기화되지 않았다면 초기화를 촉..