컴퓨터 공부/JAVA
[기타]data/heap/stack/메모리 구조
나정_
2012. 3. 30. 00:23
data/heap/stack/메모리 구조
프로그램에 실행 될 때마다 필요한 메모리 공간 (지역 변수, 전역 변수 공간)의 할당을 위해 메인 메모리 (RAM)에 할당된다. 이렇게 할당되는 메모리 공간은 데이터, 힙, 스택의 세 영역으로 나뉜다.
* data 영역
데이터 영역은 전역변수와 정적 변수(static 변수)가 할당되는 영역이다.
이 영역에 할당되는 변수들은 일반적으로 프로그램 시작과 동시에 할당되고 종료될 시 메모리에 소멸된다.
* Stack ( 스택 )
스택영역은 함수호출시 생성되는 지역변수와 매개변수가 저장되는 영역이다.
이 영역에 할당된 변수는 함수 호출이 완료되면 사라진다. ( 늦게할당 된 메모리가 먼저 out됨 )
* Heap
프로그래머애 의해 메모리 공간이 할당 및 소멸되는 공간으로 동적할당으로 생성되는 메모리 영역이다.
프로그램 내의 Test t = new Test(); 객체를 생성하는 작업시에 생성되는 데이터 영역으로 JVM 시작시에 생성된다.
* 자바 기준에서 보면....
객체가 사는 곳은 "힙", 메소드 호출/ 지역변수 등이 사는 곳은 "Stack"