Java의 메모리 구조

김수환·2023년 7월 1일
0

자바의 프로그램 실행 구조

  • 다른 프로그램 :
    프로그램 - OS - 하드웨어
    OS가 프로세스별로 메모리를 할당해주고, 프로세스를 실행 시킨다.
  • 자바 프로그램 :
    프로그램 - JVM - OS - 하드웨어
    OS가 JVM에 메모리를 할당해준다. (Runtime Data Area)
    JVM이 자바프로그램을 관리한다.
    JVM은 OS의 도움 없이 멀티쓰레드를 지원한다.
    어떤 OS에서도 동일한 결과를 갖는다.

Runtime Data Area

PC, Method Area , Heap, JVM Stack, Native Method Stack

  1. PC register
  • 현재 수행중인 JVM Instruction 주소
  • 스레드가 생성되면서 할당
  1. Method Area
  • 바이트 코드, 필드 정보, 메소드 정보, Static 변수 (클래스 변수)가 저장
  • JVM이 실행되면서 생성되는 공간
  • 저장된 정보들은 프로그램 실행 시 부터 종료 시 까지 저장되어 있다.
  1. Heap
  • new 연산자로 동적으로 생성된 객체 및 배열이 저장되어 있다.
  • 저장된 정보들은 Garbage Collector가 처리하면 삭제된다.
  • 객체, 배열, String 등 참조형 자료(Reference Type Data)들이 저장 되어 있다.
  • 저장되어 있는 기간에 따라 Old, Young으로 나눠 저장되어 있다.
  1. JVM Stack
  • 메소드에서 사용하는 지역 변수가 저장되어 있다.
  • Stack 이라는 이름 답게 LIFO방식.
  • 지역 변수인데 참조형 Data면 해당 주소를 Stack에 저장한다.
  1. Native Method Stack
  • Java 이외의 C/C++등의 언어로 작성된 메소드들이 저장되어 있다.
profile
hello human

0개의 댓글