본문 바로가기

JVM

JVM 메모리 구조

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