JVM (Java Virtual Machine)

Java가 어떤 운영체제에서도 실행될 수 있도록 운영체제 상위에서 자바 프로그램을 실행하는 가상 기계이다.

  • Class Loader
    • 자바 파일 컴파일 후 생성된 클래스 파일들을 RunTime Data Area로 각각 적재
  • Execution Engine
    • RunTime Data Area에 적재된 클래스들을 기계어로 변경해 명렁어 단위로 실행
  • Garbage Collector
    • heap 메모리 영역에 생성된 객체들 중에 참조되지 않는 객체들을 탐색 후 제거
  • Runtime Data Area
    • JVM의 메모리 영역으로 자바애플리케이션을 실행할때 사용되는 데이터들을 적재하는 영역
  • Method Area
    • 프로그램 시작 시 클래스 정보가 저장되는 영역으로, 
    • 클래스의 메서드 정보, static 변수 등 저장
    • 모든 객체가 공유하는 공용 공간
  • Stack Area
    • 지역 변수, 파라미터 등이 저장되었다가, 해당 영역의 실행 끝나면 다시 데이터가 스택에서 지워지는 임시적으로 생성된 데이터의 영역
    • 객체, 배열을 가리키는 참조형 변수도 이 영역에 생성
  • Heap Area
    • new 키워드로 생성된 객체와 배열이 생성되는 영역
  • PC Register
    • Thread가 생성될때마다 생성되는 영역으로, Program Counter
  • Native Stack Area
    • 자바외 언어로 작성된 네이티브 코드를 위한 메모리 영역