프로그램 실행 하기 위해선 먼저 프로그램이 메모리에 로드(load) 되어야 함 그리고 프로그램에서 사용 되는 변수들을 저장할 메모리도 필요함

따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공

할당 받는 대표적인 메모리 공간은 4가지 있음

  1. 코드 영역
  2. 데이터 영역
  3. 스택 영역
  4. 힙 영역

명령어, function, 연산자 명령어로 바뀌어 프로세서가 다음 프로그램 카운터로 통해서 실행 해야할 명령어들을 하나씩 올리는 단계에 코드 들을 여기에 저장 한번 저장되면 바뀌지 않음

(static)고정된 변수 (초기화)→ RW, RO 일단 한번 만들어진 메모리는 생성 여러번 하는게 아니라 일회 초기화 되고 나면 어디서든지 사용할수 있는 메모리가 된다 프로그램이 올라올때 프로그램 상에서 결정됨

이미 결정 된 메모리

클래스를 통해서 객체를 생성 할때 사용 어느정도 메모리에서 채워지게 되고 점점 메모리가 부족 해지는데 그래서 사용하지 않는 객체를 해제 하게 됨 GC(garbage Collection 객체의 참조 카운터가 없는것)정책에 의해서 해제

메모리의 낮은 주소에서 높은주소로 방향으로 할당

비 결정 메모리

garage collector가 제거 되지 않고 계속 힙영역에서 쌓이게 된다면 힙 한계를 넘었을때 OOM(OutOfMemory)에러 발생한다 (참조가 제거 되지않고 남아있어서 메모리 누출)