JAVA

[JVM] Java Virtual Machine

내나위 2024. 9. 22. 20:34
728x90
반응형
SMALL

자바 가상 머신(Java Virtual Machine, JVM)은 시스템 메모리를 관리하면서 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경을 제공한다.

 

JVM의 2가지 기본 기능

  • 자바 프로그램이 어느 기기, 또는 어느 운영체제 상에서도 실행될 수 있게 하는 것("한번 작성해, 어디에서나 실행")
  • 프로그램 메모리를 관리하고 최적화 하는 것

JVM의 정의

  • 기술적 정의 : 코드를 실행하고 해당 코드에 대해 런타임 환경을 제공하는 소프트웨어 프로그램에 대한 사양
  • 일반적 정의 : 자바 프로그램을 실행하는 방법. JVM의 설정에 따라 실행 중에 프로그램 리소스를 관리

라이선스가 부여되는 거의 모든 JVM은 오픈 JDK, 핫스팟 JVM의로 포크(Fork)로 생성된 것

 

JVM 구조

JVM 구조

  • Java compiler는 .java 파일을 .class 라는 Java byte code로 변환 시켜 줌
  • Byte Code 는 기계어가 아니기 때문에OS에서 바로 실행되지 않음
  • JVM은 OS가 ByteCode를 이해할 수 있도록 해석 해줌
  • Byte Code는 JVM 위에서 OS상관없이 실행

Class Loader

RunTime 시점에 클래스를 로딩하게 해주며 클래스의 인스턴스를 생성하면 클래스 로더를 통해 메모리에 로드하게 됨

 

Runtime Data Areas

JVM이 프로그램을 수행하기 위해 OS로 부터 별도로 할당 받은 메모리 공간

Execution Engine

Load된 Class의 ByteCode를 실행하는 Runtime Module이 바로 Execution Engine

Class Loader를 통해 JVM 내의 Runtime Data Areas 에 배치된 바이트 코드는 Executin Engine에 의해 실행되며, 실행 엔진은 자바 바이트 코드를 명령어 단위로 읽어서 실행함

  • JIT (Just-In-Time) 컴파일러 : 런타임 시 바이트 코드를 원시 시스템 코드로 컴파일하여 Java™ 애플리케이션의 성능을 향상시키는 런타임 환경의 컴포넌트
  • Garbage Collector : 할당되었다가 더 이상 쓰이지 않는 메모리를 자동으로 회수하는 가비지 컬렉션을 수행

참고 사이트 : https://medium.com/@lazysoul/jvm-%EC%9D%B4%EB%9E%80-c142b01571f2

728x90
반응형
LIST