개발자 기술 면접 준비/정리

메모리 구조

ucong 2021. 6. 7. 23:44

 

코드영역

- 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부름

- 사용자가 프로그램 실행 명령을 내리면 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