JVM(Java Virtual Machine) - 1

ymk·2023년 5월 12일
0
post-thumbnail

JVM이란 무엇인가?

JVM, 즉 Java Virtual Machine을 영어로 직역하면 자바를 실행하기 위한 가상 기계 라고 할 수 있다. 하지만 영어권에서는 컴퓨터를 머신(machine)이라고도 부르기 때문에 JVM에서 '머신'이라는 용어 대신 '컴퓨터'를 사용하여 자바를 실행하기 위한 컴퓨터 라고 이해하는 것이 더 좋을 것 같다.

자바로 작성된 애플리케이션은 JVM에서 실행되기 때문에 항상 JVM이 필요하다.

일반 애플리케이션은 OS를 거쳐 바로 하드웨어로 전달되는 반면 Java 애플리케이션은 JVM을 먼저 거치고, 하드웨어에 맞게 완전히 컴파일된 상태가 아니여서 실행 시 해석되는 과정(Interpreter 방식) 때문에 속도가 느리다.
하지만 지금은 byte code (컴파일된 자바 코드)를 기계어로 바로 변환해주는 JIT(Just In Time) 컴파일러와 최적화 기술이 발전하여 속도가 상당히 개선되었다.


"Write once, run anywhere"

이 문구는 JVM으로 인해 생기는 Java의 장점 중 하나를 나타내는 유명한 문구다. 즉 Java는 어떠한 플랫폼에 영향을 받지 않는다는 것이다. 위 그림에서 볼 수 있듯이 Java 애플리케이션은 OS가 아닌 JVM과 붙어있어 일반 애플리케이션과 달리 JVM에 종속적인 것을 알 수 있다.

따라서 Java 애플리케이션은 OS에 맞게 변경할 필요가 없으며 그대로 실행할 수 있게 되는 것이다. 하지만 JVM은 OS에 종속적이기 때문에 해당 OS에서 실행 가능한 JVM이 필요하다.


JVM 내부 구조와 메모리 구조

지금까지는 JVM의 정의와 필요 이유를 알아보았다. JVM에는 자동적으로 메모리를 관리해주는 가비지 컬렉터 (Garbage Collector), 클래스 로더 (Class Loader), 실행 엔진(Execution Engine)이 구조를 이루고 있다.

이에 대한 자세한 내용은 https://velog.io/@ymkim97/JVMJava-Virtual-Machine-2 여기에 작성하였다.

profile
개발 공부 일지

0개의 댓글