JAVA를 공부하다 보면 JVM이라는 용어를 보게 된다. 오늘은 JVM에 대해서 알아보고 구성 요소들과 상세 기능에 대해서 알아보겠습니다.
JVM(Java Virtual Machine)
자바 가상 머신(JVM)은 자바 바이트코드를 모든 하드웨어 및 운영 체제에서 실행할 수 있도록 만들어진 가상 컴퓨팅 엔진입니다. 이는 플랫폼 독립적인 자바의 특성을 가능하게 하는 핵심 구성 요소로 볼 수 있습니다. JVM은 WORA(Write Once, Run Anywhere) 원칙을 실현하기 위해 설계되었으며, 자바 프로그램들이 다양한 환경에 맞추어 전혀 별개의 컴파일 없이 실행될 수 있도록 지원합니다.
JVM의 구성 요소 및 상세 기능
클래스 로더 시스템(Class Loader System)
클래스 파일을 로드하여 JVM 내의 런타임 데이터 영역에 배치합니다. 런타임 중 필요에 따라 동적으로 클래스를 로드합니다. 보안 관리자와 함께 클래스가 JVM에 의해 실행되도록 허용할지를 확인합니다.
런타임 데이터 영역(Runtume Data Area)
프로그램 실행 중에 JVM이 사용하는 데이터를 저장하는데 사용됩니다. 메소드 영역, 힙 영역, 스택 영역, 프로그램 카운터, 네이트브 메소드 등으로 구성됩니다. 가비지 컬렉션과 같은 메모리 관리 역시 여기에 속합니다.
실행 엔진(Excution Engine)
클래스 로더 시스템에 의해 로드된 클래스 파일의 바이트코드를 실행시킵니다. 인터프리터 방식과 JIT 컴파일러 방식을 사용하여 바이트코드를 실행시킬 수 있습니다.
네이티브 메서드 인터페이스(Native Method Interface, JNI)
자바 언어로 작성되지 않은 네이티브 라이브러리의 기능을 사용할 수 있도록 해줍니다. 자바 앱이 플랫폼에 특화된 기능을 필요로 할 때 유용하게 사용됩니다.
가비지 컬렉터(Garbage Collector)
객체가 더 이상 사용되지 않을 때 자동으로 메모리를 해제하는 역할을 합니다.
메모리를 효율적으로 관리하여 프로그램의 성능을 유지합니다.
JVM은 또한 플랫폼에 종속적인 부분인 인프라 층(underlying infrastructure)과 플랫폼 독립적인 애플리케이션 층(application-level)의 중간에서 매개 역할을 하여, 소프트웨어 개발자들이 다양한 운영체제 환경에서 동일한 자바 프로그램을 실행 수 있게 합니다. 스택 기반으로 효율적인 메모리 관리를 할 수 있도록 디자인된 JVM은 각종 최적화 기술을 포함하여 안정적인 코드 실행을 돕습니다. 가비지 컬렉션과 같은 현대적인 프로그래밍 언어의 주요 특징들을 지원하며, 심볼릭 레퍼런스를 이용하여 타입을 참조하고 기본 자료형의 일관성을 유지합니다. 더불어 네트워크 바이트 오더를 사용하여 클래스 파일을 일련 표준화된 방식으로 관리합니다.
종합적으로, JVM은 자바 프로그램을 실행하기 위한 환경을 구축하고, 다양한 메모리 관리 및 최적화 기능을 제공하여 프로그램이 효율족으로 동작할 수 있도록 지원하는 중대한 역할을 담당합니다.
'Web Programing > JAVA' 카테고리의 다른 글
JAVA와 JavaScript의 특징 차이점 (0) | 2024.02.08 |
---|---|
JAVA의 핵심 JDK와 JRE에 대해서 알아보자 (0) | 2024.02.07 |
JAVA 에러(Error)와 예외(Exception)의 차이 (0) | 2024.02.06 |
JAVA 인터페이스 주요 특징 목적과 사용 이유 (0) | 2024.02.01 |
JAVA 객체 지향 프로그래밍 추상화 캡슐화 상속 다형성 (0) | 2024.01.31 |