-
Java in MemoryJAVA/in 기초 2014. 1. 19. 22:42728x90
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