Made in 2PARK

[0.04] 자바 가상머신의 메모리 모델 본문

자바기본

[0.04] 자바 가상머신의 메모리 모델

2PARK 2013. 11. 29. 19:32

1. 메소드 영역(method area)  - 메소드의 바이트코드, static 변수

2. 스택 영역(stack area) - 지역변수, 매개변수

3. 힙 영역(heap area) - 인스턴스


=======================================================================================


1. 메소드영역

 - 프로그램 실행의 흐름을 형성하는 메소드들은 '메소드 영역'에 저장된다. 또한 static변수도 '메소드영역'에 저장된다. 


2. 스택영역

 - "메소드 내에서만 유효한 변수들"을 저장하는 스택영역

 - 지역변수와 매개변수는 임시로 할당되었다가 메소드를 빠져나가면서 소멸되는 특성이 있으며, 이러한 특성을 가진 저장영역이 스택영역이다.

 - 지역변수와 매개변수는 선언되는 순간에 스택에 할당되었다가, 자신이 할당된 메소드의 실행이 완료되면 스택에서 소멸된다.


3. 힙영역

 - 인스턴스를 저장하는 영역.

 - 인스턴스가 소멸될 때 힙영역에서 소멸되는게 당연하지만, 인스턴스가 언제 소멸되는지 알아야 한다. (가비지 컬렉션과의 관계)

 - 어떠한 참조변수로도 참조가 이뤄지지 않는 인스턴스는 존재할 이유가 없다. 프로그램상에서 더 이상의 참조가 불가능하기 때문이다. 이렇듯 어떠한 형태로건 참조되지 않는 인스턴스가 소멸의 대상이 되며, 이러한 조건이 충족되었을 때 자바 가상머신은 해당 인스턴스를 소멸시킨다.

 ex) str1 = "My string";

      str1 = null; //이 때 "My string"은 인스턴스로서 존재할 이유가 없어짐. 따라서 소멸의 대상.



※ 가비지 컬렉션 (Garbage Collection)이 발생하는 정확한 시점

 - 인스턴스가 가비지 컬렉션의 대상이 되었다고 바로 소멸이 되는 것은 아니다. 빈번한 가비지 컬렉션의 실행은 시스템에 부담이 되기에 성능에 영향을 미치지 않도록 가비지 컬렉션의 실행타이밍은 별도의 알고리즘을 기반으로 계산됨.

'자바기본' 카테고리의 다른 글

[0.06] 직접 정의하는 예외의 상황  (0) 2013.12.01
[0.05] 기본적인 예외처리  (0) 2013.12.01
[0.03] continue, break  (0) 2013.11.29
[0.02] for, while, do~while  (0) 2013.11.29
[0.01] 조건연산자, Switch문의 활용  (0) 2013.11.29
Comments