본문 바로가기
개발/그 외

[개발지식] 메모리 구조

by 데브시나 2022. 5. 9.

목차

  1. 메모리
  2. 메모리 영역

 

1. 메모리

프로그램이 실행되려면 프로그램 구동 시에 운영체제로부터 메모리 공간을 할당 받아야 합니다. 메모리는 보통 RAM 공간을 이용해 할당을 받고, 메모리 영역은 한정되어 있습니다. 한정된 메모리를 효율적으로 사용하는 프로그램을 작성해야 합니다. 잘못 작성된 프로그램은 느리거나 프로그램이 갑자기 꺼지는 등의 각종 문제가 발생합니다.

 

2.메모리 영역

 

코드(code) 영역

  • 메모리의 코드 (code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부릅니다. CPU는 코드 영역에 저장된 명령어를 하나 씩 가져가서 처리하게 됩니다.

 

데이터(data) 영역

  • 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역입니다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸합니다. 그래서 프로그램 작성 시 전역 변수나 정적 변수가 새로 추가되면 Java 프로그램을 다시 컴파일해야 합니다.

 

힙(heap) 영역

  • 메모리의 힙(heap) 영역은 사용자가 직접 관리할 수 있는 메모리 영역입니다. 힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됩니다. 힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됩니다.

 

스택(stack) 영역

  • 메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다. 스택영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다. 이렇게 스택 영역에 저장되는 함수의 호출 정보를 스택 프레임(stack frame)이라고 합니다.

 

댓글