JVM은 기본적으로 Stack메모리와 Heap메모리 라는 두가지 저장 공간을 이용하여 메모리를 할당한다고 배웠다.
Stack메모리와 Heap메모리가 무엇인지 차근차근 다시 알아보려고 한다.
먼저 메모리란, 프로그램이 실행되기 위해서는 운영체제(OS)가 프로그램의 정보를 메모리에 로드해야 한다. 또한 프로그램이 실행되는 동안 CPU가 코드를 처리하기 위해서는 메모리가 명령어와 데이터들을 저장해야 한다.
위와 같이 프로그램이 운영체제(OS)로 부터 할당받는 대표적인 메모리 공간은 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 구성되어있다.
동적 메모리 할당
사용자가 직접 관리할 수 있고 관리해야만 하는 메모리 영역
사용자에 의해 메모리 공간이 동적으로 할당되고 해제
malloc() 또는 new연산자를 통해 할당되고 free() 또는 delete연산자를 통해 해제된다.
메모리의 낮은 주소에서 높은 주소의 방향으로 할당
장점
단점
정적 메모리 할당
함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역
스택 영역의 크기는 컴파일 시 결정
함수의 호출과 함께 할당되며 함수의 호출이 완료되면 소멸
메모리의 높은 주소에서 낮은 주소의 방향으로 할당
장점
단점