[메모리 누수란 무엇인가]

Random-access memory


소프트웨어는

  1. 바이트 코드를 로드하기위해

  2. 실행되는 프로그램이 사용하는 데이터와 데이터 구조를 임시 저장하기 위해

  3. [런타임 시스템](https://whatis.techtarget.com/definition/runtime-system#:~:text=A runtime system is an,for program execution and operation.) 을 로드하기 위해 컴퓨터의 Random-access memory의 접근을 필요로하는데, 일반적으로 메모리는 stack 메모리heap 메모리로 분류됩니다.

Stack Memory

일반적으로 스택에 저장되는 데이터 종류로는 지역변수(local variables), 포인터, 함수 프레임이 있습니다. 거의 모든 프로그래밍 언어에는 스택에 저장될 수 있는 데이터의 사이즈에 상한이 있으며, 스택의 사이즈를 초과하는 경우에 StackOverflowError 가 발생합니다.

Heap Memory

Heap Memory

일반적으로 힙에 저장되는 데이터 종류로는 자바스크립트의 전역 변수 (global variables), 참조 타입(objects, strings, map와 같은 reference types)이 있습니다. 할당된 힙 공간을 초과하는 메모리를 사용하려고 하면 OutOfMemory 에러가 발생합니다. 일반적으로 힙 메모리 용량에 제한은 따로 없습니다 (메모리 총 용량을 초과할 수는 없겠죠).

Garbage collected 언어