
코드(텍스트) 영역1. 코드(텍스트)가 저장되는 영역CPU는 코드 영역에 저장된 명령어를 하나씩 가져와 처리데이터 영역1. 전역 변수(global) 저장 공간2. 정적 변수(static) 저장 공간3. 외부 변수(exturn) 저장 공간힙 영역reference(ref) 타입 저장 공간동적 메모리 할당: 동적 할당을 통해 생성되는 변수의 저장 공간  런 타임 크기 결정
동적 할당: 사용자가 메모리 영역을 직접 관리할 수 있고, 직접 관리 해야만 하는 방식- 힙이 자란다 = 위에서 아래로 쌓인다.(낮은 주소 -> 높은 주소 방향 할당)
 
장점
- 주소를 통한 변수의 접근 및 연산 가능
 - 메모리 크기의 제한이 없음
 
단점
상대적으로 느린 접근(할당, 해제가 느림)
메모리를 직접 관리 -> 메모리 누수 발생 가능
OS마다 메모리 관리 방법이 다르고, 포인터를 사용해 어렵다.
SOH(Small of Heap)
작은 용량의 객체를 위한 전용 힙 영역LOH (Large Object Heap)
큰 용량의 객체를 위한 전용 힙 영역스택 영역value(val) 타입 변수 저장 공간
정적 메모리 할당: 정적 할당을 통해 생성되는 변수의 저장 공간  컴파일 타임 크기 결정
함수 호출과 관계되는 1. 함수, 2. 지역 변수(local), 3. 매개변수, 4. 리턴 값이 저장되는 공간
함수 호출시 할당되고, 호출 종료 시, 소멸
LIFO(Last In First Out = Stack)방식 사용
Push(데이터 저장) & Pop(데이터 인출)
스택이 자란다 = 아래에서 위로 쌓인다.(높은 주소 -> 낮은 주소 방향 할당)
장점
- 매우 빠른 접근(할당, 해제가 빠름)
 - 메모리 자동 관리
 
단점
- 흔히, 레퍼런스 타입은 heap 영역에 저장된다 하지만,
 포인터 변수 자체는stack 영역에 저장되고,객체 자체는heap 영역에 저장//이하 코드는 코드 영역에 저장 public class Orc{ } public class Test{ int //stack 영역 | heap 영역 저장 Orc orc1 = new Orc(); Orc orc2 = new Orc(); Orc orc3 = new Orc(); }
가비지 컬렉션:일부 언어(C#, JAVA 등)은Heap 메모리 영역에서할당 해제되어 누수되는 메모리(가비지)에 대해 일정 주기마다 자동으로 수거하는가비지 컬렉터를 지원하고, 이를 통해가비지 컬렉션을 수행한다.