[Java] 자바 기초 정리(1)

김나우·2022년 4월 26일
0

JVM

자바가상머신의 약자

JVM은 자바 애플리케이션을 Class Loader를 통해 읽어 자바 API와 함께 실행

스택 기반의 가상머신


구조

  • Class Loader
  • Execution
  • Runtime Data Area
  • JNI
  • Native Method Libray

Class Loader

JVM내로 클래스를 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈


실행 엔진

바이트 코드를 실행하는 역할

인터프리터

바이트 코드를 한줄 씩 실행

JIT 컴파일러

인터프리터 효율을 높이기 위한 컴파일러, 인터프리터가 반복되는 코드를 발견하면

JIT 컴파일러가 반복되는 코드를 네이티브 코드로 바꿔줌, 그 다음부터 인터프리터는

네이티브 코드로 컴파일된 코드를 바로 사용

GC

가비지 컬렉터로 힙 영역에서 사용되지 않는 객체들을 제거하는 작업을 의미


Runtime Data Areas

프로그램 실행 중에 사용되는 다양한 영역

PC Register

Thread가 시작될 때 생성, 현재 수행중인 JVM 명령의 주소를 가지고 있음

Stack Area

지역 변수, 파라미터 등이 생성되는 영역, 실제 객체는 Heap에 할당, 레퍼런스만 Stack에 저장

Heap Area

동적으로 생성된 오브젝트와 배열이 저장되는 곳, GC의 대상 영역

Method Area

클래스 멤버 변수, 메소드 정보, 타입 정보 static, final 변수 등이 생성


JNI

자바 애플리케이션에서 C, C++, 어셈블리어로 작성된 함수를 사용할 수 있는 방법을 제공

Native 키워드를 사용하여 메서드 호출, 대표적으로 Thread의 currentThread()


Native Method Library

C, C++로 작성된 라이브러리

profile
안녕하세요

0개의 댓글