기술면접 준비

JVM 이란 무엇이고 왜 필요한지?

Albosa2lol 2024. 7. 30. 17:29
  • 답안
    • JVM은 자바 프로그램이 어느 플랫폼에서든지 동일하게 실행될 수 있도록 해주는 가상 머신 입니다. JVM 덕에 다양한 운영체제와 하드웨어 환경에서 앱을 쉽게 배포하고 실행할 수 있습니다.
  • 상세한 이유
    • 메모리 및 자원 관리: JVM은 메모리 할당과 해제를 자동으로 관리하여 메모리 누수와 같은 문제를 줄여줍니다. 가비지 컬렉션은 프로그래머가 직접 메모리를 관리해야 하는 부담을 덜어줍니다.
    • 보안 강화: JVM은 실행 전에 바이트코드를 검증하고, 클래스 로더를 통해 안전하게 클래스를 로드하여 보안을 강화합니다. 이는 외부 코드가 시스템에 해를 끼치는 것을 방지합니다.
    • 성능 최적화: JVM의 JIT 컴파일러와 기타 최적화 기술을 통해 자바 애플리케이션의 실행 속도가 크게 향상됩니다. JIT 컴파일러는 실행 중에 바이트코드를 네이티브 코드로 변환하여 성능을 최적화합니다.
    • 풍부한 생태계 지원: JVM은 자바뿐만 아니라 Kotlin, Scala, Groovy 등의 다양한 언어를 지원하여 넓은 생태계를 제공합니다. 이는 개발자들이 다양한 언어로 JVM 상에서 개발할 수 있게 해줍니다.
  • JVM 기능 (참조)
    • 바이트코드 실행: 자바 컴파일러(javac)가 생성한 바이트코드(.class 파일)를 해석하고 실행
    • 메모리 관리: JVM은 힙 메모리와 스택 메모리를 관리하며, 가비지 컬렉션(Garbage Collection)을 통해 더 이상 사용되지 않는 객체를 자동으로 메모리에서 해제
    • 플랫폼 독립성: JVM은 운영 체제나 하드웨어에 상관없이 동일한 바이트코드를 실행할 수 있기 때문에, 자바 프로그램은 "한 번 작성하면 어디서나 실행된다(Write Once, Run Anywhere)"
    • 보안: JVM은 클래스 로더와 바이트코드 검증을 통해 안전하게 자바 프로그램을 실행. 이 과정에서 악의적인 코드가 실행되는 것을 방지
    • 성능 최적화: JVM은 JIT(Just-In-Time) 컴파일러를 사용하여 실행 중에 자주 사용되는 바이트코드를 네이티브 기계어로 컴파일하여 성능을 최적화