ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java in Memory
    JAVA/in 기초 2014. 1. 19. 22:42
    728x90

    1.  JVM Memory



    메소드 영역

     - 메소드의

          바이트코드

     - 클래스 변수 

     힙(heap) 영역

     - 객체

    스택(stack) 영역

    - 매개변수

    - 지역변수 

    PC 

    레지스터 

    Native 

    메소드 스택 

    데이터 영역 구분


    •  메소드 영역 : 모든 스레드가 공유하는 영역으로 JVM이 시작될 때 생성된다. JVM이 읽어 들인 각각의 클래스와 인터페이스에 대한 런타임 상수 풀, 필드와 메소드 정보, Static변수 메소드의 바이트 코드 등을 보관한다.
    • 힙(Heap) 영역 : 인스턴스 또는 객체를 저장하는 공간으로 가비지 컬렉션 대상이다. GC로 관리되는 영역이다.
    • 스택(Stack) 영역 : 스택은 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 생성된다. 스택프레임(Stack Frame)라는 구조체를 저장하는 스텍으로 JVM은 오직 JVM 스택프레임을 추가하고(PUSH) 제거하는 동작(POP)만 수행한다.
    • PC 레지스터 : 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 생성된다. PC 레지스터는 현재 수행중인 JVM 명령의 주소를 갖는다.
    • Native 메소드 스택 : Native Method Stack은 각 쓰레드당 하나씩 생성된다. Native Mehod 호출시 native Method 매개변수, 지역변수등을 바이트 코드로 저장한다.
      * Native Method : C, C++같은 언어로 구현된 메소드, 주로 하드웨어에 대한 접근용 메소드(JNI - JAVA Native Interface)
    2. Heap 영역 상세 동작

    Permanent

     Generation 

    New

    Eden 

    From 

    To

    Old 

    Heap 영역 상세


    • Permanent Space :  Class에 대한 Meta 정보를 저장하는 공간
      - Method of class(including th bytecodes)
      - Names of the classes
      - Constant pool information
      - JVM으로부터 만들어진 내부 객체
    • New Generation 
      - Eden : 새로(new) 생긴 모든 객체
      - Survivor 1(From) : Minor GC에 의해서 Eden, Survivor 2영역의 객체 중 활성화된 객체만 이동하여 위치, Old Space로 이동되기 전의 객체만 위치
      - Survivor 2(To) : Minor GC에 의해서 Eden, Survivor 1영역의 객체중 활성화된 객체만 이동하여 위치, Old Space로 이동되기 전 객체만 위치
    • Old Generation : Survivor 1, Survivor 2 영역에서 이동해온 객체만 위치, Full GC 대상이되 는 객체가 위치


    참고 자료 : http://abacus.tistory.com/230


    728x90

    'JAVA > in 기초' 카테고리의 다른 글

    Formatting 기능  (0) 2014.02.21
    예외처리(Exception)  (0) 2014.02.21
    컬랙션(Collection)과 맵(Map) 계열  (0) 2014.02.21
    Polymorphism  (0) 2014.02.03
    Overloading, Constructor, Inheritance, Overriding, this, super  (0) 2014.02.02
Designed by Tistory.