[JAVA] JVM Class Loading, Metaspace, 그리고 메서드 바이트코드까지 한 번에 이해하기
·
Language/Java
1. 왜 이 글을 쓰는가? 요즘 JVM의 클래스 로딩, 링킹, 그리고 ClassLoader.defineClass() 구현까지 따라가면서 공부하고 있다. 단순히 클래스 로딩 → 메서드 영역 → 실행 처럼 외워서는 금방 잊어버리게 되어, .class 파일의 바이트코드가 JVM 내부에서 어떤 객체/메모리 구조로 변해서 실제로 실행되는지를 한 번에 정리해 보려고 한다.이 글은 다음 질문에 답하는 것을 목표로 한다..class 파일 안의 메서드 코드는 어떻게 저장돼 있을까?ClassLoader.defineClass(byte[])가 바이트 배열을 받아서 내부에서 무슨 일을 할까?메서드의 바이트코드는 JVM 메모리 어디(Method Area / Metaspace)에 저장될까?인터프리터는 이 메타데이터를 어떻게 읽어서..