개발놀이터

면접 준비 : JVM 본문

CS 지식/면접준비

면접 준비 : JVM

마늘냄새폴폴 2022. 7. 14. 02:11

Q. JVM이 뭔가요? / JVM에 대해서 설명해주세요
A. 자바 가방 머신의 약자로 JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 자바 API와 함께 실행하는 것입니다. 메모리 관리를 수행하며 스택 기반의 가상머신입니다. 

Q. JVM의 구조를 설명해주세요
A1. JVM의 구조는 Class Loader, Execution Engine, Runtime Data Areas, JNI, Native Method Library로 이루어져 있습니다.

이 뒤는 자세하게 듣기를 원하면 대답하기
A1-1. Class Loader는 JVM내로 클래스들을 로드하고 링크를 통해 배치하는 작업을 수행합니다.

 

Execution Engine은 바이트 코드를 실행시키는 역할을 하며, 구성 요소로는 인터프리터, JIT 컴파일러, 가비지 컬렉터가 있습니다.인터프리터는 바이트 코드를 한줄씩 실행해주는 역할을 합니다. JIT 컴파일러는 인터프리터의 효율을 높이기 위한 컴파일러로 인터프리터가 반복되는 코드를 발견하면 JIT 컴파일러가 반복되는 코드인 Native 코드로 바꿔줍니다. 가비지 컬렉터는 힙영역에서 사용되지않는 객체를 제거하는 역할을 수행합니다.

 

Runtime Data Areas는 프로그램 실행 중에 사용되는 다양한 영역입니다. 구성요소로는 PC Register, Stack Area, Heap Area, Method Area가 있습니다. PC Register는 스레드가 실행될 때 생성되며 현재 수행중인 JVM 명령의 주소를 갖고있습니다. Stack Area는 지역변수, 파라미터등이 생성되는 영역으로 실제 객체는 Heap에 할당되고 레퍼런스만 Stack에 저장됩니다. Heap Area는 동적으로 할당된 오브젝트와 배열이 저장되는 공간으로 가비지 컬렉터의 영역입니다. Method Area는 클래스 멤버 변수, 메서드 정보, Type 정보, 상수 풀, static 변수, final 변수등이 생성됩니다.

 

JNI는 Java Native Interface의 약자로 자바 애플리케이션에서 C, C++, 어셈블리어로 작성된 함수를 사용할 수 있는 방법을 제공합니다. Native키워드를 사용하여 메소드를 호출합니다.

 

Native Method Library는 C, C++로 작성된 라이브러리 입니다. 

Q. Java의 실행방식을 설명해주세요.
A. 자바의 실행방식은 먼저 컴파일러가 소스 코드를 읽어 바이트코드로 변환시킵니다. 그 후 Class Loader를 통해 class 파일들을 JVM으로 로딩합니다. 그리고 로딩된 class파일들은 Execution Engine을 통해 해석됩니다. 마지막으로 해석된 바이트코드는 Runtime Data Areas에 배치되어 실질적인 수행이 이루어집니다. 

 

https://coding-review.tistory.com/123

 

JVM (Java Virtual Machine)

JVM은 자바 버추얼 머신의 약자로 자바 애플리케이션을 클래스로더를 통해 자바 API와 함께 사용할 수 있게 해준다. 메모리 관리를 수행하며 스택 기반의 가상머신 이다. JVM의 구조는 Class Loader, Ex

coding-review.tistory.com