JVM

다혜·2022년 3월 29일
0
post-custom-banner

✅ JVM이란?

✔ Java Virtual Machine
자바를 실행하기 위한 가상 머신

  • 자바로 작성된 어플리케이션은 모두 JVM에서만 실행된다.

Java 어플리케이션과 일반 어플리케이션

Java 어플리케이션은 JVM과 OS를 거쳐 하드웨어로 전달된다.

  • 하드웨어에 맞게 컴파일 된 상태가 아니고 실행 시에 해석된다.
  • 따라서 속도가 느리다는 단점이 있다.
    • 요즘엔 JIT 컴파일러와 최적화 기술 향상으로 속도 격차가 줄었다고 한다.

OS에 종속적

  • Java 어플리케이션은 JVM과 상호작용 하기 때문에 OS와 하드웨어에 종속적이다.
  • JVM은 OS에 종속적이다.
  • 따라서 각 OS에서 실행 가능한 JVM이 필요하다.



✅ Java 프로그램 실행 과정

① 자바 컴파일러가 자바 소스코드(.java)를 읽어들여 자바 바이트코드(.class)로 변환시킨다.
② 자바 인터프리터가 바이트코드(.class)를 기계어로 해석하고 실행한다.


실제로 2번 부분은 저렇게 간단하지 않지만 뒤에서 자세히 알아보자..



✅ JVM 구조

Class Loader

JVM내로 .class파일을 로드하고 링크, 초기화 함으로써 Runtime Data Area에 적재시킨다.

Execution Engine

Class Loader에 의해 Runtime Data Area에 배치된 .class파일(바이트코드)를 기계어로 변환시킨다.

Garbage Collector

Heap메모리 영역에 적재된 객체들 중 참조되지 않는 객체들을 탐색 후 제거한다.

Runtime Data Area

자바 어플리케이션을 실행할 때 사용되는 데이터들을 적재하는 영역. 프로그램 수행을 위해 OS에게서 할당받은 메모리 공간.

3가지 주요 영역

  • Method Area
    .class 파일을 읽어서 클래스에 대한 정보(클래스 데이터)를 이곳에 저장한다.
  • Heap Area
    인스턴스를 저장하는 공간. 해당 인스턴스 변수 및 배열이 이곳에 저장된다.
  • Stack Area
    프로그램 실행 중 임시로 할당되었다가 메소드가 작업을 마치면 소멸되는 데이터를 저장하기 위한 영역. 메소드가 호출될 때마다 개별적으로 스택 프레임이 생성된다. 메소드가 작업을 마치면 할당되었던 메모리 공간(프레임)은 반환되어 비워진다.





책읽으며 간단하게 정리...
다음에 더 자세하게 정리하기로!

💛 참고 :
Java의 정석
https://asfirstalways.tistory.com/158
https://technote-mezza.tistory.com/72

profile
봉식이를 위한 개발을 하고 싶오
post-custom-banner

0개의 댓글