JVM란 무엇인가

Gyuri Kim·2023년 6월 26일
0

cs

목록 보기
7/7

✅ JVM

정의

JVM( Java Virtual Machine )은 자바 프로그램 실행환경을 만들어주는 소프트웨어입니다. 자바는 컴파일러를 통해 작성된 소스 코드를 기계어로 변환하는 대신, 중간 단계의 .class 바이트코드라는 형식으로 컴파일합니다. 이 바이트 코드는 JVM에 의해 해석되어 프로그램이 실행됩니다. JVM은 JRE(Java Runtime Environment)에 포함되어 있습니다.



장점

JVM을 사용하면 하나의 바이트 코드로 모든 플랫폼에서 동작이 가능합니다. 자바로 test.java 파일을 생성했다고 가정 해봅시다. test.java 파일을 컴파일하면 자바 컴파일러에 의해 test.class 파일이 생성됩니다.

그리고 이렇게 생성된 바이트 코드는, 각자 플랫폼에 설치되어 있는 JVM 에 의해 운영체제에 맞는 실행파일로 바뀌게 됩니다. 즉, JVM을 사용하여 각자의 플랫폼에 맞게끔 컴파일을 따로 해줘야 할 필요가 없어진 것 입니다.



역할

JVM은 바이트 코드를 해석하는 역할 외에도 다양한 역할을 합니다.

  • 메모리 관리

JVM은 자동으로 메모리를 관리합니다. 프로그램이 필요로 하는 메모리를 할당하고, 더 이상 사용되지 않는 메모리를 자동으로 해제합니다.

  • 가비지 컬렉션

JVM은 가비지 컬렉션을 수행하여 메모리에서 더 이상 필요 없는 객체를 자동으로 제거합니다. 이를 통해 개발자가 직접 메모리 관리에 신경쓰지 않아도 되며, 메모리 누수를 방지할 수 있습니다.

  • 예외처리

JVM은 프로그램이 실행 중에 발생하는 예외를 처리합니다. 예외는 예상치 못한 상황에서 발생하는 오류를 의미하며, JVM은 이러한 예외를 적절히 처리하여 프로그램의 비정상 종료를 방지합니다.

  • 스레드 관리

JVM은 동시에 여러 작업을 수행할 수 있는 스레드를 관리합니다. 이를 통해 자바 프로그램은 병렬로 작업을 처리하거나 동시에 여러 작업을 수행할 수 있습니다.



동작방식

  1. 자바로 개발된 프로그램을 실행하면, JVM은 OS로부터 메모리를 할당합니다.
  2. 자바 컴파일러가 자바 소스코드를 자바 바이트 코드로 컴파일 합니다
  3. Class Loader을 통해 JVM runtime Area로 로딩합니다.
  4. Runtime Data Area에 로딩 된 .class 바이트 코드들은 Execution Engine을 통해 해석됩니다.
  5. 해석된 바이트 코드는 Runtime Data Area의 각 영역에 배치되어 수행됩니다. 이 과정에서 Excution Engine에 의해 Garbage Collector의 작동과 스레드 동기화가 이루어집니다.



🔈 질문과 대답

Q JVM이 무엇이고, 어떤 역할을 하는지 설명해주세요


JVM은 Java Virtual Machine의 약자로, 자바 프로그램 실행환경을 만들어주는 소프트웨어입니다. 자바 프로그램은 컴파일러를 통해 기계어로 직접 변환되지 않고, 중간 단계의 바이트 코드라는 형식으로 컴파일 됩니다. JVM은 이 바이트 코드를 해석하고 실행합니다. 이를 통해 자바 프로그램이 다른 운영체제나 하드웨어에서도 동작할 수 있습니다.

바이트 코드 해석 외에도 JVM은 여러 가지 기능을 수행합니다. 프로그램이 필요로 하는 메모리를 할당하는 메모리 관리 역할도 하고, 가비지 컬렉션을 사용하여 더 이상 사용되지 않는 메모리를 자동으로 해제하는 역할도 하고, 자바 프로그램이 병렬로 작업을 처리할 수 있도록 스레드 관리 역할도 합니다.

📒 참고자료

https://coding-factory.tistory.com/827

profile
👩‍💻 IT Engineering (이사 전 블로그 : https://blog.naver.com/kgr2626 )

0개의 댓글