코드영역
- 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부름
- 사용자가 프로그램 실행 명령을 내리면 OS가 HDD에서 실행 코드를 메모리로 올리게 되고, CPU는 코드 영역에 저장된 명령어를 하나씩 처리하게 된다.
* HDD(Hard disk Drive) - 컴퓨터의 기억장치 중 한가지인 보조 기억장치
데이터 영역
- 프로그램의 전역변수와 정적변수가 저장되는 영역
- 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸
힙영역
- 프로그래머가 직접 관리할 수 있는 메모리 영역으로 이 공간에 메모리를 할당하는 것을 동적 할당이라고 부른다.
- JAVA에서는 가비지 컬렉터가 자동으로 해제해준다.
- 힙 영역은 스택 영역과 달리 낮은주소에서 높은 주소로 메모리가 할당
스택영역
- 함수의 호출과 함께 할당되며 지역변수와 매개 변수가 저장되는 영역
- 스택 영역에 저장되는 함수의 호출 정보를 스택프레임이라고 함
- 스택영역은 함수의 호출이 끝나면 소멸
- 높은 주소에서 낮은 주소로 메모리가 할당
- 푸시 동작으로 데이터 저장/ 팝 동작으로 데이터 인출
- 후입선출(LIFO)에 따라 동작하므로, 가장 늦게 저장된 데이터가 가장 먼저 인출됨
힙과 스택은 같은 공간을 공유하지만 시작지점이 다르다.
서로 겹치는 것을 Stack/Heap Overflow라고 한다.
'개발자 기술 면접 준비 > 정리' 카테고리의 다른 글
String VS StringBuffer VS StringBuilder (0) | 2021.06.08 |
---|---|
런타임 VS 컴파일 (0) | 2021.06.08 |
메모리란? (0) | 2021.06.07 |
데드락이란? (0) | 2021.06.07 |
멀티 프로세스 VS 멀티 쓰레드 (0) | 2021.06.07 |