JVM 구조는 크게 클래스 로더 시스템, 메모리, 실행 엔진 으로 구성되어 있다. 클래스 로더 시스템 컴파일된 .class 파일(byte code) 를 읽고 메모리에 적절하게 배치하는게 클래스 로더가 하는 일이다. 클래스 로더가 하는일은 크게 세 가지로 나누어 볼 수 있다. 로딩, 링크, 초기화 로딩: 클래스 파일에서 byte code 를 읽어오는 과정 링크: 레퍼런스를 연결하는 과정 초기화: static 값들 초기화 및 변수에 할당 메모리 크게 다섯가지 영역으로 나뉘어져 있다. 모두 중요하긴 하지만 하나를 꼽으라면, 메소드 영역을 더 유심히 볼 필요가 있다. 메소드 영역에는 클래스 수준의 정보 (클래스 이름, 부모 클래스 이름, 메소드, 변수) 를 저장한다. 그리고 공유자원이다. 즉 다른 영역에서도 참..