Java

[Java] JVM에 대하여

parangofsky 2026. 1. 5. 23:52

오늘은 자바의 기초 개념에 대해서 정리해보겠습니다.

 

1. JVM이란?

 

자바가상머신이라고도 하며 자바를 실행할 수 있도록 해주는 엔진 역할을 합니다.

컴파일러가 .java파일을 .class로 바꾸면, jvm은 .class 파일을 컴퓨터가 이해하는 기계어로 바꿔 실행시켜줍니다.

 

2. JVM의 주요 구성 요소와 기능

JVM 내부에는 크게 세 가지 영역이 있습니다.

① 클래스 로더 (Class Loader)

작성한 .class 파일을 읽어와서 JVM의 메모리 영역에 배치하는 역할을 합니다. 프로그램 실행 중에 필요한 클래스를 그때그때 동적으로 로드합니다.

② 런타임 데이터 영역 (Runtime Data Areas)

프로그램을 실행하기 위해 OS로부터 할당받은 메모리 공간입니다. 가장 중요한 두개는 스택과 힙이 있습니다.

  • 스택(Stack): 메서드 호출 정보, 지역 변수 등이 저장되는 곳입니다. (임시 저장소)
    - 메서드가 호출될 때마다 각각의 '프레임'이 생기고 끝나면 바로 사라집니다.
  • 힙(Heap):
    - new 키워드로 생성된 모든 객체들이 저장되는 곳입니다. (공유 저장소)
    - 스택에 있는 변수는 이 힙에 있는 객체의 '주소'를 가리킵니다.

③ 실행 엔진 (Execution Engine)

메모리에 올라온 Bytecode를 실제로 실행합니다. 두 가지 방식이 섞여 있습니다.

  • 인터프리터: 명령어를 한 줄씩 읽어서 실행합니다. (다소 느림)
  • JIT(Just-In-Time) 컴파일러: 반복되는 코드를 미리 기계어로 변환해 두어 실행 속도를 높여줍니다.
  • 가비지 컬렉터 (Garbage Collector, GC): 더 이상 사용하지 않는 객체를 메모리에서 자동으로 삭제합니다. (아무도 참조하지 않아 고립된 객체를 지움)

'Java' 카테고리의 다른 글

[Java] 리플렉션(Reflection)  (0) 2026.01.13
[Java] 인터페이스와 추상클래스  (0) 2026.01.10
[Java] 객체지향 - final 2  (0) 2026.01.09
[Java] 객체지향  (0) 2026.01.08
[Java] JVM 2  (0) 2026.01.07