memostack
article thumbnail
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형

Runtime Data Area

JVM 메모리를 뜻함

 

Runtime Data Area는 5개 영역으로 나눠짐

  • Method Area, Heap, Stack, PC Register, Native Method Area
    • Method AreaHeap은 모든 스레드가 공유하는 공간
    • Stack, PC Register, Native Method Area는 각각의 스레드가 하나씩 가지는 공간

Runtime Data Area

 

Method Area (메소드 영역)

  • class datastatic 변수가 저장되는 공간
  • 모든 스레드(Thread)가 공유하는 공간
  • JVM이 실행될때 생성됨

 

Heap (힙 영역)

  • new 를 통해 동적으로 생성되는 객체가 저장되는 공간 (또는 배열)
  • Heap에 저장된 데이터는 메모리 관리가 필요한 GC 대상
    • 만약 참조하지 않는 데이터라면 GC에 의해 제거됨
  • 모든 스레드(Thread)가 공유하는 공간
  • JVM이 실행될때 생성됨

 

GC 관련 내용은 아래 참고

2021/03/07 - [Language/JAVA] - JVM GC(Garbage Collector) 정리

 

JVM GC(Garbage Collector) 정리

GC (Garbage Collector) JVM에는 메모리를 자동으로 관리해주는 특징이 있는데, 이 역할을 Garbage Collector (가비지 콜렉터)이 한다. Stop The World GC에는 stop-the-world 라는 것이 존재하여, 메모리가 관리..

memostack.tistory.com

 

Stack (스택)

스택은 프레임(Frame)이 저장되는 공간

  • Frame: 메소드 정보, 메모리 파라미터, 지역변수, 참조 주소값 데이터가 저장되는 공간

다른 스레드와 공유하지 않고, 각각의 스레드마다 가지는 공간

JVM 메모리 - Stack

  • 프레임은 메소드(method)가 실행될 때, Stack에 push 하여 추가됨
  • 반대로, 메소드가 종료되면, Stack에서 pop 되어 제거됨

 

PC Register

Programe Counter Register의 약자로 JVM이 현재 실행할 명령어의 주소값을 저장하는 공간

  • 즉, 코드의 몇번째 줄을 실행하면 되는지 저장하는 공간

다른 스레드와 공유하지 않고, 각각의 스레드마다 가지는 공간

 

Native Method Area

JAVA가 아닌 Native 언어(C/C++)을 실행하기 위해 사용되는 공간

다른 스레드와 공유하지 않고, 각각의 스레드마다 가지는 공간

 

 

관련 글

2021/03/07 - [Language/JAVA] - JVM과 JVM 아키텍처 (Class Loader, Runtime Data Area, Execution Engine)

 

JVM과 JVM 아키텍처 (Class Loader, Runtime Data Area)

JVM Java Virtual Machine 의 약자. Java 프로그램이 플랫폼에 의존하지 않고, 어디서든 동작 가능하도록 하기 위한 Java 가상 머신이다. 단, Java 프로그램은 JVM 위에서 동작하기 때문에, JVM에 의존성을 가

memostack.tistory.com

 

반응형
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
profile

memostack

@bluemiv_mm

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!