컴퓨터 공부/JAVA

[기타]data/heap/stack/메모리 구조

나정_ 2012. 3. 30. 00:23

data/heap/stack/메모리 구조 

프로그램에 실행 될 때마다 필요한 메모리 공간 (지역 변수, 전역 변수 공간)의 할당을 위해 메인 메모리 (RAM)에 할당된다. 이렇게 할당되는 메모리 공간은 데이터, 힙, 스택의 세 영역으로 나뉜다.




* data 영역 


데이터 영역은 전역변수와 정적 변수(static 변수)가 할당되는 영역이다. 

이 영역에 할당되는 변수들은 일반적으로 프로그램 시작과 동시에 할당되고 종료될 시 메모리에 소멸된다. 


* Stack ( 스택 ) 

                      

스택영역은 함수호출시 생성되는 지역변수와 매개변수가 저장되는 영역이다. 

이 영역에 할당된 변수는 함수 호출이 완료되면 사라진다. ( 늦게할당 된 메모리가 먼저 out됨 ) 


* Heap


프로그래머애 의해 메모리 공간이 할당 및 소멸되는 공간으로 동적할당으로 생성되는 메모리 영역이다.

 프로그램 내의 Test t = new Test(); 객체를 생성하는 작업시에 생성되는 데이터 영역으로 JVM 시작시에 생성된다. 


* 자바 기준에서 보면....

객체가 사는 곳은 "힙", 메소드 호출/ 지역변수 등이 사는 곳은 "Stack"