cleanUrl: /posts/optimizing-java-jvm-overview
  1. 이 챕터는 다른 챕터를 이해하기 위해 JVM이 자바 코드를 실행하는 방법을 소개한다.
  2. 성능에 관심이 있는 개발자라면 JVM 기술 스택의 구조를 이해해야 한다
  3. JVM 기술을 이해하면 더 좋은 소프트웨어를 개발할 수 있고 성능 이슈를 탐구할 때 필요한 이론적 지식을 갖는다.

인터프리팅과 클래스로딩 (Interpreting and Classloading)

java HelloWorld 라는 명령을 실행하면

  1. OS는 가상 머신 프로세스(java binary)를 구동한다.
  2. 자바 가상 환경이 구성된다.
  3. stack 머신이 초기화 된다.
  4. HelloWorld 클래스가 실행된다.

여기서 application 의 진입은 HelloWorld.classmain() method 이다.

제어권을 이 클래스로 넘기기 위해 가상 머신(이하 VM) 이 실행되기 전에 이 클래스를 load 해야한다.

classloading 매커니즘

자바 process 가 초기화되면 사슬처럼 연결된 클래스 로더가 차례차례 작동한다.

  1. bootstrap class 실행
  2. java ≤ 8 은 rt.jar 에서 runtime core class 를 로드한다.