ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 메모리 사용영역
    JAVA 2022. 5. 9. 17:38

     

     

    ※JVM이 사용하는 메모리 영역

    OS에서 할당 받은 메모리 영역(Runtime Data Area)을 세영역으로 구분합니다.

     

     

     

    ※메소드 영역은 JVM이 시작할때 생성되고 모든 스레드가 공유하는 영역입니다.

    *Static area*

    ○전역변수와 정정 멤버변수(static)는 Static 영역에 데이터 저장합니다.

    ○Static 영역의 데이터는 프로그램의 시작부터 종료가 될 때까지 메모리에 유지됩니다.

    *Stack area*

    ○기본 자료형(byte, int, long, double, boolean)에 해당하는 지역변수의 데이터 값이 저장되는 공간입니다.

    ○해당 메소드가 호출될 때 메모리에 할당되고 종료되면 메모리가 해제됩니다.

    ○스레드별로 생성되며, 스레드가 시작될 때 할당됩니다.

    ○메소드를 호출할때 마다 Frame을 Stack에 추가(push)됩니다.

       (frame : 스레드의 메소드가 호출될 때 수행 정보(메소드 호출 주소, 매개변수, 지역변수, 연산 스택 등)

    ○메소드가 종료되면 Frame 제거(pop)됩니다.

    *Heap Area*

    ○참조형(Reference Type)의 데이터 타입을 갖는 객체(인스턴스), 배열등은 Heap 영역의 공간에 실제 데이터가 저장됩니다. 모든스레드가 공유합니다.

    ○참조형 변수(객체, 객체변수, 참조변수)는 Stack 영역의 공간에서 실제 데이터가 저장된 Heap영역의 참조 값을 New연산자를 통해 리턴을 받습니다.

    ○​사용되지 않는 객체는 Garbage Collector 가 자동 제거 합니다.

    'JAVA' 카테고리의 다른 글

    데이터 타입분류  (0) 2022.05.09
    데이터 입출력  (0) 2022.05.09
    코드 실행 흐름 제어  (0) 2022.05.09
    연산자와 연산식  (0) 2022.05.09
    상수  (0) 2022.05.09
Designed by Tistory.