[javascript] 참조 유형에 따른 메모리 사용 패턴
프로그래밍에서 메모리 사용은 매우 중요합니다. 특히 참조 유형에 따라 메모리의 사용 패턴이 달라질 수 있습니다. 이번 글에서는 JavaScript에서의 참조 유형에 따른 메모리 사용 패턴에 대해 알아보겠습니다.
기본 데이터 유형 (Primitive Data Types)
기본 데이터 유형은 값(value)을 직접 메모리에 저장합니다. 변수는 해당 값을 직접 가지고 있어서 참조할 필요가 없습니다. 따라서 기본 데이터 유형은 메모리의 스택(stack)에 저장됩니다. 이러한 데이터 유형에는 다음과 같은 종류가 있습니다:
- 숫자(number)
- 문자열(string)
- 불리언(boolean)
- null
- undefined
아래는 예시입니다:
let num = 42; // 메모리 스택에 직접 저장
let text = 'Hello World!';
let isActive = true;
let empty = null;
let unknown;
참조 데이터 유형 (Reference Data Types)
참조 데이터 유형은 값이 메모리의 힙(heap)에 저장되고, 변수는 해당 값의 메모리 위치를 참조합니다. 이러한 데이터 유형에는 다음과 같은 종류가 있습니다:
- 객체(Object)
- 배열(Array)
- 함수(Function)
아래는 예시입니다:
let person = { name: 'John', age: 25 }; // 힙에 객체 저장, 변수는 해당 위치를 참조
let numbers = [1, 2, 3, 4, 5]; // 힙에 배열 저장, 변수는 해당 위치를 참조
let add = function(a, b) { return a + b; }; // 힙에 함수 저장, 변수는 해당 위치를 참조
메모리 사용 패턴 비교
기본 데이터 유형과 참조 데이터 유형에 따른 메모리 사용 패턴을 비교해보면 다음과 같습니다:
- 기본 데이터 유형은 크기가 작고, 값을 직접 저장하기 때문에 메모리 사용량이 작습니다. 또한 값을 변경하는 경우 메모리의 스택에 새로운 값을 저장합니다.
- 참조 데이터 유형은 힙에 실제 값이 저장되고, 변수는 해당 위치를 참조하기 때문에 메모리 사용량이 큽니다. 또한 값을 변경하는 경우, 해당 값을 참조하는 모든 변수에 영향이 있습니다.
따라서, 참조 데이터 유형을 사용할 때에는 메모리 사용량에 주의해야 합니다. 큰 크기의 객체나 배열을 자주 생성하는 경우, 메모리 누수(memory leaks)와 성능 저하에 영향을 줄 수 있습니다.
요약
메모리 사용은 프로그래밍에서 중요한 부분입니다. 참조 유형에 따라 메모리 사용 패턴이 다르므로, 기본 데이터 유형과 참조 데이터 유형을 구분하여 적절하게 사용해야 합니다. 기본 데이터 유형은 메모리의 스택에 저장되고, 참조 데이터 유형은 메모리의 힙에 저장됩니다. 메모리 사용량에 대한 고려와 메모리 누수를 방지하기 위해 유의해야 합니다.
참고 자료: