ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JVM 메모리 구조
    Java 2018. 7. 12. 11:01
    반응형

    JVM 메모리 구조는 어떤가...






    1. JVM 메모리 구조

    Method Area 

    Heap

    Stack 

    PC 레지스터


    Native Method Stacks


     

     1. Permanent Generation

     2. New / Young Generation

     3. Old Generation

     

     

     


    - JVM의 메모리 구조는 크게 5가지로 Method Area, Heap, Stack, PC 레지스터, Native Method Stacks 로 이루어져있습니다.

      간단하게는 Stack 영역에는 local variable이 저장되고, Heap 영역에는 모든 객체의 속성 정보가 저장됩니다.




    1) Method Area

    - Java 실행 단계 중 Class loading 단계에서 Type, 상속, Package, Class, Method, 멤버 변수 정보, static 변수, 상수 등 정보를 적재합니다.

    - Class loading 단계에서 클래스에 관련된 메타 정보를 적재합니다.

    - JVM이 시작 시 생성되고 프로그램이 종료되거나 명시적으로 null을 선언하면 종료된다. 또한 GC의 대상입니다.

    - 모든 Thread에서 공유합니다.

    * Java 실행 단계 ( 1. Class loading --> 2. ByteCode 검증 --> 3. 실행 단계(main 부터 시작)




    2) Heap

    - 프로그램 상에서 데이터를 저장하기 위해 동적으로 할당하여 사용하는 영역입니다.

    - new 연산자로 생성된 객체의 속성 정보 또는 인스턴스, 배열을 저장합니다. (해당 객체의 주소값을 생성하여 참조케 합니다.)

    - 모든 Thread에서 공유합니다.

    - 객체가 더 이상 쓰이지 않거나 명시적으로 null 선언 시에 종료됩니다. 또한 GC의 대상입니다.

    - Permanent Generation은 Class, Method에 대한 Meta 정보를 저장합니다.

    - Old는 Young Generation 영역에서 저장되었던 객체 중에서 시간이 지나 오래된 객체, 우선 순위가 낮아진 객체가 이동되어서 저장되는 영역입니다. 




    3) Stack

    - FILO(First In Last Out) 구조 입니다.

    - Method 안의 정보( 지역 변수, 매개 변수, 리턴 값)과 연산 중 발생하는 임시 데이터를 저장합니다.

    - 중괄호 {} 나 Method가 끝날 때 종료됩니다.

    - 각 Thread로 생성됩니다.




    4) Native Method Stacks

    - 자바 외 언어로 작성된 네이티브 코드를 위한 Stack 입니다. ( C나 C++과 같은....)

    - native 메소드의 매개변수, 지역변수 등을 바이트 코드로 저장합니다.

     - 각 Thread로 생성됩니다.






    반응형
Designed by Tistory.