JVM 이란

5BRack·2022년 6월 28일

자바란?

목록 보기
2/42

JVM (JAVA Virtual Machine)

  • 일명 “자바 가상 머신”
  • 자바와 운영체제 사이에서 중계자 역할
  • GC(Gavage Collactor를 사용한 메모리 관리 자동 수행)

JVM 구성요소

  • 클래스 로더(Class Loader)
  • 실행 엔진(Execution Engine)
    - 인터프리터(interpreter)
    • JIT 컴파일러(Just-in-Time)
    • 가비지 콜렉터(Garbage Collector)
  • 런타임 데이터 영역(Runtime Data Area)

여기서는 런타임 데이터 영역만을 다룹니다.

Runtime Data Area

  • JVM의 메모리 영역으로 자바 애플리케이션을 실행할 때 사용되는 데이터들을 적재하는 영역이다.

  • 이 영역은 크게 Method Area, Heap Area, Stack Area, PC Register, Native Method Stack로 나눌 수 있다.

Method area (메소드 영역)

  • 클래스 멤버 변수의 이름, 데이터 타입, 접근 제어자 정보같은 필드 정보와 메소드의 이름, 리턴 타입, 파라미터, 접근 제어자 정보같은 메소드 정보, Type정보(Interface인지 class인지), Constant Pool(상수 풀 : 문자 상수, 타입, 필드, 객체 참조가 저장됨), static 변수, final class 변수등이 생성되는 영역이다.

Heap area (힙 영역)

  • new 키워드로 생성된 객체와 배열이 생성되는 영역이다.

  • 메소드 영역에 로드된 클래스만 생성이 가능하고 Garbage Collector가 참조되지 않는 메모리를 확인하고 제거하는 영역이다.

Stack area (스택 영역)

  • 지역 변수, 파라미터, 리턴 값, 연산에 사용되는 임시 값등이 생성되는 영역이다.

  • int a = 10; 이라는 소스를 작성했다면 정수값이 할당될 수 있는 메모리공간을 a라고 잡아두고 그 메모리 영역에 값이 10이 들어간다. 즉, 스택에 메모리에 이름이 a라고 붙여주고 값이 10인 메모리 공간을 만든다.

  • 클래스 Person p = new Person(); 이라는 소스를 작성했다면 Person p는 스택 영역에 생성되고 new로 생성된 Person 클래스의 인스턴스는 힙 영역에 생성된다.

  • 그리고 스택영역에 생성된 p의 값으로 힙 영역의 주소값을 가지고 있다. 즉, 스택 영역에 생성된 p가 힙 영역에 생성된 객체를 가리키고(참조하고) 있는 것이다.

  • 메소드를 호출할 때마다 개별적으로 스택이 생성된다.

PC Register (PC 레지스터)

  • Thread(쓰레드)가 생성될 때마다 생성되는 영역으로 Program Counter 즉, 현재 쓰레드가 실행되는 부분의 주소와 명령을 저장하고 있는 영역이다. (*CPU의 레지스터와 다름)

  • 이것을 이용해서 쓰레드를 돌아가면서 수행할 수 있게 한다.

Native method stack

  • 자바 외 언어로 작성된 네이티브 코드를 위한 메모리 영역이다.

  • 보통 C/C++등의 코드를 수행하기 위한 스택이다. (JNI)

출처 - https://jeong-pro.tistory.com/148

0개의 댓글