[공부/Java] Runtime Data Area

2022. 12. 28. 19:03·Develop/Java
728x90
반응형

Java


Runtime Data Area는 JVM의 메모리 영역으로 자바 애플리케이션을 실행할 때 사용되는 데이터들을 적재하는 영역이다.

이 영역은 크게 Method Area, Heap Area, Stack Area, PC Register, Native Method Stack으로 나뉜다.

 

Method Area

JVM이 실행되면서 생기는 공간이다. 모든 쓰레드가 공유하는 메모리 영역으로 클래스, 인터페이스, 메소드, 필드, Static 변수 등의 바이트 코드가 저장되는 공간이다.

이 영역 안에는 Runtime Constant Pool이라는 공간도 있는데 '상수'정보가 저장된다. Class Area, Code Area, Static Area로 불려진다.

Heap Area

모든 쓰레드가 공유하며, new 키워드로 생성된 참조형의 데이터 타입을 갖는 객체와 배열이 저장되는 공간이다. 실제 데이터를 갖고 있는 Heap 영역의 참조 값을 Stack 영역의 객체가 가지고 있어 변수(객체, 객체변수, 참조변수)는 Stack 영역의 공간에서 실제 데이터가 저장된 Heap 영역의 참조값을 new 연산자를 통해 리턴 받는다.

메소드 영역에 로드된 클래스만 생성이 가능하고 GC가 참조되지 않는 메모리를 확인하고 제거하는 영역이다.

Stack Area

메소드 호출시마다 각각의 스택 프레임(그 메소드 만의 공간)이 생성된다.

메소드 안에서 사용되는 값들을 저장하고, 호출된 메소드의 매개 변수, 지역변수, 리턴 값 및 연산 시 일어나는 값들을 임시로 저장해주고 메소드 수행이 끝나면 프레임별로 삭제한다.

PC Register

쓰레드가 시작될 때 생성되며, 쓰레드가 생성될 때마다 생성되는 공간으로 쓰레드마다 하나씩 존재한다.

쓰레가 어떤 부분을 무슨 명령으로 실행해야할 지에 대한 기록을 하는 부분으로 현재 수행중인 JVM 명령의 주소를 가진다.

Native Method

자바 외 언어(C, C++)로 작성된 네이티브 코드를 위한 메모리 영역이다.

Java 변수에 따른 저장 공간

  • 클래스 변수 : Method Area
  • 인스턴스 변수 : Heap Area
  • 지역 변수 : Stack Area

참고 자료 :

https://velog.io/@shin_stealer/자바의-메모리-구조

https://m.blog.naver.com/heartflow89/220954420688

https://k9e4h.tistory.com/389

728x90
반응형

'Develop > Java' 카테고리의 다른 글

[공부/Java] Java와 Kotlin  (0) 2022.12.28
[공부/Java] 고정 소수점과 부동 소수점, 왜 컴퓨터는 소수 계산을 정확하게 못할까?  (0) 2022.12.28
[공부/Java] static이란?  (0) 2022.12.28
[공부/Java] JVM, JRE, JDK  (0) 2022.12.24
[공부/Java] JVM 구성 - Class Loader, Execution Engine, Garbage Collector  (0) 2022.12.24
'Develop/Java' 카테고리의 다른 글
  • [공부/Java] Java와 Kotlin
  • [공부/Java] 고정 소수점과 부동 소수점, 왜 컴퓨터는 소수 계산을 정확하게 못할까?
  • [공부/Java] static이란?
  • [공부/Java] JVM, JRE, JDK
yulee_to
yulee_to
  • yulee_to
    yulee
    yulee_to
  • 전체
    오늘
    어제
    • 전체 글 (170)
      • CS (2)
        • OS (0)
        • DB (0)
        • Network (2)
      • Develop (1)
        • Spring (9)
        • Java (12)
        • Python (0)
        • Algorithm (0)
        • 기타 (0)
      • PS (39)
        • C++ (39)
        • Java (0)
      • TIL (61)
      • Book (39)
        • 자바의 신 (32)
        • 스프링 입문을 위한 자바 객체 지향의 원리와 이해 (7)
      • ETC (4)
        • Blog (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    aws
    객체지향
    GodOfJava
    알고리즘
    에스넷시스템
    boj
    스터디
    1일1백준
    에스넷시스템 부트캠프
    자바
    백준
    TiL
    C++
    스프링 입문
    EC2
    자바의 신
    부트캠프후기
    Java
    멀티캠퍼스it부트캠프
    클라우드 활용 네트워크 엔지니어 부트캠프
  • 최근 댓글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
yulee_to
[공부/Java] Runtime Data Area
상단으로

티스토리툴바