[CS] Java 정리 - Java와 JVM

JEONG KI MIN·2024년 10월 7일
0

CS - Java

목록 보기
1/3
post-thumbnail

1. Java에 대해서 설명해주세요

자바는 객체지향형(OOP) 프로그래밍 언어로, 객체지향의 특징인 캡슐화,상속,다형성 등이 적용되어 있는 언어이다.

  • 장점
    JVM(Java Virtual Machine) 위에서 돌아가기 때문에 OS에 독립적으로 실행된다.
    Garbage collector 를 통해 자동으로 메모리 관리를 해준다. (이때 Garbage collector는 JVM 에서 제공함)

  • 단점
    JVM을 통해 실행되기 때문에 상대적으로 실행속도가 느리다.

2. JVM에 대해서 설명해주세요

OS에 종속받지 않고 CPU가 Java를 인식하고 실행할 수 있게 만드는 머신이다.

자바 프로그램과 OS 사이의 중개자 역할을 하면서 자바 프로그램을 OS에 독립적으로 실행하게끔 해준다.

3. OS 에 따라 JVM을 설치해야 하는 이유를 설명해주세요

Java 코드는 Java 컴파일러가 변환하여 바이트 코드를 만들어낸다. 이 바이트 코드는 OS 가 이해할 수 있는 형식이 아니고 JVM이 이해하는 형식이다.
바이트 코드를 OS 가 이해할 수 있는 형식으로 다시 컴파일 하기 위해 JIT 컴파일러가 사용 된다.
이러한 JIT 컴파일러를 OS에 적합한 버전으로 다운로드 받아야 하기 때문이다.

4. Java 컴파일 과정을 설명해주세요

개발자가 작성한 java 코드(.java)는 java 컴파일러(javac)에 의해 바이트 코드(.class)로 변환된다.
이제, JVM은 Class Loader 를 통해서 바이트 코드를 Runtime Data Area 로 옮긴다. 옮겨진 바이트 코드들은 Execution Engine 에 의해 해석 되어 Runtime Data Area 에 알맞는 영역으로 배치 된다.
이 과정에서 Execution Engine 에 의해 Garbage Collectoin 이 수행 된다.

5. JVM의 Runtime Data Area 에 대해 설명해주세요

자바 컴파일러에 의해 변환된 바이트 코드를 Class Loader 가 Runtime Data Area에 전달해준다.
이때 Runtime Data Area 는 모든 쓰레드가 공유하는 영역인 Method Area, Heap과 각 쓰레드가 가지고 있는 Stack, PC Register, Native Method Stack 으로 이루어져 있다.

Method Area는 클래스에 대한 정보가 올라오는 영역이다.
Heap 은 new 를 통해 생성된 인스턴스가 생성되는 영역이다.
Stack 은 지역 변수, 매개 변수, 리턴값 등 임시적으로 사용되는 값이 저장되는 영역이다.
PC Register 는 현재 쓰레드가 실행되는 부분의 주소와 영역을 저장하는 영역이다.
Native Method Stack 은 자바가 아닌 다른 Native 언어로 작성된 코드를 실행할 때 사용되는 영역이다.

profile
열심히 해볼게요

0개의 댓글