본문 바로가기

Java

JVM

Q1. JVM은 무엇의 줄임말인가?

- Java Virtual Machine의 줄임말이다. 

 

 

Q2. JVM의 목적은 무엇인가?

- Write Once Run Anywhere를 실현하기 위해서,

  JRE(Java Runtime Environment)에서 제공하는 VM(Virtual Machine)이다. 

 

 

Q2-1 왜 JVM을 알아야 하는가?

 

 

Q2-2 JVM은 자바가 무엇에 구애받지 않고 실행하게 해주는가?

 

 

Q3. 자바 소스 파일을 자바 컴파일러가 어떻게 하는가?

- 자바 소스 파일(.java)을 자바 컴파일러가 바이트 코드(.class)로 변환한다. 

 

 

Q4. 자바 바이트 코드란 무엇인가?

-  

 

 

 

Q4-1. 왜 자바 바이트 코드를 만드는가?

- JVM 내의 실행 엔진(Execution Engine)이 실행할 수 있는 형태를 만드는 것이다. 

 

 

Q4-2 다음 자바 코드가 바이트 코드로 변환되면 어떻게 변환되는가?

outer:
for (int i = 2; i < 1000; i++) {
    for (int j = 2; j < i; j++) {
        if (i % j == 0)
            continue outer;
    }
    System.out.println (i);
}

 

 

Q5. Class Loader의 역할은 무엇인가?

- 자바 컴파일러에 의해 생성된 바이트 코드를 JVM 내부의 Runtime Data Area로 가져오는 역할을 한다. 

 

 

Q6. Execution Engine의 역할은 무엇인가?

- Runtime Data Area에 배치된 바이트 코드를 해석하고 실행하는 역할을 한다. 

 

 

Q7. Runtime Data Area란 무엇인가?

- JVM의 구성 요소로서, 자바 컴파일러에 의해 생성된 바이트 코드가  배치되는 곳을 의미한다. 

 

 

Q7-1 Method Area란 무엇인가? Method Area의 특징은 무엇인가?

- Method Area는 Runtime Data Area의 구성 요소로서, 클래스, static 변수 등이 배치되는 영역이다. 

  그리고 Method Area는 모든 스레드가 공유한다는 특징이 있다. 

 

Q7-2. Heap Area란 무엇인가?  Heap Area의 특징은 무엇인가?

- Heap Area는 Runtime Data Area의 구성 요소로서, 객체가 배치되는 영역이다. 

  Heap Area는 모든 스레드가 공유한다는 특징이 있다. 

 

Q7-2-1 왜 Heap Area는 모든 스레드가 공유하는가?

 

 

Q7-3. Stack Area란 무엇인가? Stack Area의 특징은 무엇인가?

- Stack Area는 메소드 내의 매개변수나 지역 변수가 배치되는 영역이다.

  Stack Area는 각 스레드마다 독립적으로 생성된다는 특징이 있다. 

 

 

Q7-3-1. Method가 호출 될 때, Stack Area에 어떻게 생성되는가?

 

Q7-4. PC Register란 무엇인가? PC Register의 특징은 무엇인가?

 

Q7-4-1. PC Register에는 무엇이 저장되는가?

- 프로그램 카운터와 같이 다음 실행할 메모리의 주소가 저장된다.

  PC Register는 각 스레드마다 독립적으로 갖는다. 

 

Q7-5. Native Method Stack이란 무엇인가? 

 

 

Q7-5-1 왜 Native Method Stack이 필요한가?

 

 

Q8. 자바의 문제는 무엇에 집중이 되어 왔는가?

- 메모리 관리에 집중이 되어 왔다. 

 

Q8-1 왜 자바의 문제는 메모리 관리에 집중이 되어 있는가?

- 자바의 메모리 관리가 자바에서 실행되는 애플리케이션의 성능과 관련이 있기 때문이다. 

 

 

Q9. 인텔 x86아키텍쳐나 ARM 아키텍쳐와 같은 하드웨어와 대비되는

       JVM의 특징은 무엇인가?

- 스택 기반 가상 머신이라는 점이다. 인텔 x86아키텍쳐나 ARM 아키텍쳐는 레지스터에 기반한다. 

 

Q9-1 스택 기반의 가상 머신이라는 의미가 무엇인가?

- Operation의 처리를 스택을 활용해서 한다는 의미이다. 

 

 

Q9-2 왜 스택을 기반으로 Operation을 처리하는가?

 

 

Q10. JVM의 두번째 특징은 심볼릭 레퍼런스를 사용한다는 점이다.

         여기서 심볼릭 레퍼런스란 무엇인가?

         JVM은 왜 심볼릭 레퍼런스를 사용하는가?

 

 

Q10-1 심볼릭 레퍼런스란 무엇인가?

 

 

 

Q11. JVM의 세번째 특징은 가비지 컬렉션을 사용한다는 점이다.

         여기서 가비지 컬렉션이란 무엇인가?

- 자바에서 힙 영역에 선언된 객체의 메모리 해제를 담당하는 프로세스를 의미한다. 

 

 

 

참고

Q1~Q2 5/28 

Q3~Q8 JVM Performance Optimizing 6/23

Q9~Q11 https://d2.naver.com/helloworld/1230 

Q9-1 https://www.codeproject.com/Articles/461052/Stack-Based-vs-Register-Based-Virtual-Machine-Arch 

'Java' 카테고리의 다른 글

Collection 인터페이스  (0) 2022.05.30
Serializable  (0) 2022.05.29
예외  (0) 2022.05.28
JIT 컴파일러  (0) 2022.05.27
어노테이션  (0) 2022.05.27