본문 바로가기
모바일/안드로이드프로그래밍

[C/C++] 안드로이드 프로그래밍 - 자바 가상 머신(JVM)

by 푸_푸 2022. 8. 9.
728x90

자바 가상 머신(JVM)의 구조


1) 클래스 로더(ClassLoader) : 실시간으로 프로그램이 요구하는 클래스들을 자바 가상 머신으로 탑재하는 기능.


2) 실행시간 데이터 영역(RunTime Data Areas)  : 프로그램을 실행시킬 때 사용하는 메모리 영역을 관리함.
pc 레지스터 : 스레드 별로 사용하는 레지스터의 데이터를 보관하는 데 사용.
메소드가 자바 클래스 내 메소드가 아닌 네이티브 메소드라면, 일반 실행 프로그램처럼 커널에 의해 실행되기 때문에 자바 가상 머신에서 관리하지 않는다. 따라서 자바 가상 머신은 별도 네이티브 메소드를 위한 PC 레지스터 영역을 잡지 않는다.
- 자바 가상 머신 스택 : 스레드별로 별도 스택을 생성하고 관리하고, 스레드별로 생성된 스택은 스레드가 필요한 데이터를 저장하기 위해 프레임(frame)이라는 영역을 갖는다.
 : 자바는 new 지시어를 사용하여 언제 어느 때라도 클래스의 인스턴스를 생성시킬 수 있다. 프로그램이 실행되는 동안에 생성되는 클래스의 인스턴스나 배열들은 모든 스레드에서 공유하기 때문에 힙에 생성된다. 클래스 인스턴스의 삭제는 가지비 콜렉션이 객체를 가리키는 참조 변수가 존재하지 않는 인스턴스들과 배열들을 모아 한꺼번에 삭제된다.
메소드 영역 : 모든 스레드들이 공유하는 영역으로 텍스트 세그먼트(실행 코드인 바이트 코드들이 들어가는 영역)을 가리킴.
실행시간 상수 풀(Pool) : 프로그램 내부에 선언된 상수들을 따로 모아서 상수 풀에 보관함.
네이티브 메소드 스택 : 일명 C 스택이라 부르는 영역으로 바이트 코드가 아닌 기계어로 작성된 프로그램을 실행시키는 영역.


3) 실행 엔진(Excecution engine) : 클래스를 실행시킴.

728x90

댓글