OS 입장에서는 JVM이 실행된거고
JVM입장에서는 .class파일을 실행했다.
.class입장에서는 전용 os 인 JVM으로 실행한고고 JVM은 S/W로 구성되어있다.
[JVM은 s/w & h/w 두가지 성격을 갖는다]
JVM의 메모리
변수 종류 3가지 대로 나눈다.
1. stack area [call stack, execution stack]
- 지역변수가 저장되는 공간.
2. heap area
- 객체가 저장된다.[reference type이 저장되는 듯?]
3. class area/method area
- class에서 구현한 method code
- static 변수가 저장된다.
1) 스택 < 호출 받아야 일해서 call stack 이라 부른다. >
실행중인 메소드의 지역변수가 저장되는 영역
① 지역변수.
2) 힙
객체가 저장되는 영역.
① 인스턴스 변수.
3) 클래스 -
① class에 구현한 method코드
// - 메소드 코드??? ㅡ크기를 갖는건가?? 아 text section 같은 건가 보다.
② static변수 (class 변수)
프로그램의 실행 순서.
1. class loading 시점에 물리 메모리에 적재 된다.
2. 검증한다.
3. 실행한다.
-------------------------------------------------
Person p = new Person();
p가 지역변수면, stack에 적재되고 Person의 주소를 참조하며 Person 객체의 메모리는 heap에 저장된다.
-------------------------------------------------
class변수(Static 변수)
Class 영역에서 static영역에 저장이 된다.
.class 파일은 보조 디스크에 존재한다.
class area
- 세 가지로 구분이 가능하다.
static 영역, method 영역, constant pool 영역
1. static 영역은 static 변수와 , static 메소드를 저장한다.
[메소드 크기만큼 저장하는 것이 아니구, Reference를 저장한다. 실제 메모리는 실행 시점에서 stack 영역에 저장된다. (실행될 때)]
2. Method 영역은 method의 코드값을 저장한다.(바이트 코드 형태로)
3.constant pool 영역에는 final변수가 저장이 된다.
세가지 구분
'JVM' 카테고리의 다른 글
JVM Memory Structure - GC의 활용 (0) | 2015.02.06 |
---|