ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 자바 Runtime Data Area 분석
    CS/언어 2023. 8. 18. 20:54
    반응형

    ** 개인 학습을 위해 작성된 글이며 모든 정보는 오류가 있을 수 있습니다.

     

     

    자바 Runtime Data Area 에 대해 알아보기전 간단하게 자바 프로그램의 실행과정에 대해 간단하게 알아보겠습니다.

     

    개발자가 작성한 자바 코드를 자바 컴파일러가 바이트 코드로 변환시켜줍니다. 로딩된 클래스들은 Execution Engine을 통해 해석됩니다. 이후 해석된 바이트코드는 Runtime Data Area 에 배치돼 실질적인 수행이 이루어집니다.

     

     

    Runtime Data Area의 구조는 그림과 같이 5가지 영역으로 나뉩니다. 

     

    5가지 영역중 Method Area 와 Heap Area 는 스레드들이 공유하는 영역이고 Stack Area, PC Register, Native Method Stack 은 개별 스레드마다 하나씩 생성되는 메모리 영역입니다.

     

    그럼 Method Area 부터 차례대로 특징에 대해 살펴보겠습니다.

     

     

    1. Method Area

     JVM 당 하나만 실행되며 모든 스레드들이 공유하는 영역.

    클래스로더에 의해 로드된 클래스정보, 인터페이스, 메소드, 필드, Static 변수 등을 보관한다.

    JVM 구동 시작 시 생성되며 종료시까지 유지된다.

     

     

    2. Heap Area

    Method Area 와 같이 JVM 당 하나만 실행되며 모든 스레드들이 공유한다.

    자바의 new 연산으로 생성한 인스턴스, 배열등이 저장된다.

    자바의 경우 JVM의 가비지 컬렉터가 Heap 영역에서 더이상 참조되지않는 메모리 정보를 얻어온 뒤 알아서 제거해주기 때문에 C, C++과 다르게 인스턴스를 생성한 이후 free(), delete 연산을 해줄 필요가 없다.

     

     

    3. Stack Area

    각 스레드마다 별도의 스택을 가진다.

    지역변수, 매개변수 등을 저장한다.

    메서드 호출 시 스택 프레임이 증가하며 반환 시 프레임 자동 소멸된다.

     

    4. PC register

    각 스레드마다 별도의 문맥을 가지므로 스레드마다 개별 PC register를 가진다.

    일반 CPU 처럼 Program Counter를 가지며 같은 역할 수행한다.

     

    5. Native Method Stack

    스레드마다 별도의 Native method Stack 을 가진다

    Java 외의 언어로 작성된 네이티브 코드들을 위한 stack 이다.

     

     

     

     

     

    ** 다음 공부할것 

    Garbage Collection 동작과정 알아보기

    728x90
    반응형

    'CS > 언어' 카테고리의 다른 글

    [JAVA] JVM RuntimeDataArea 의 Heap 영역  (2) 2023.08.26

    댓글

Designed by Tistory.