JavaScript 스택과 힙 메모리 관리
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

스택과 힙: 자바스크립트의 메모리

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

자바스크립트 개발자 (중급/초보자), 메모리 관리 개념 이해 필요자

핵심 요약

  • 스택 메모리원시 값(string, number, boolean)을 저장하며, 변수 복사가 발생하여 변경이 서로 영향을 주지 않음
  • 힙 메모리객체(배열, 객체)를 저장하며, 참조(주소) 복사가 발생하여 변경이 서로 영향을 줌
  • 깊은 복사(deep copy)는 JSON.stringify() + JSON.parse()로 구현 가능하며, 중첩 객체까지 복제

섹션별 세부 요약

1. 메모리 할당 기본 개념

  • 스택 메모리: 고정 크기, 원시 값 저장, 빠른 접근
  • 힙 메모리: 가변 크기, 객체 저장, 느린 접근
  • 예시: let fname = "John"은 스택에 저장, let person = { fname: "John" }은 힙에 저장

2. 스택 메모리 예시

  • newfname = fname으로 복사 시, fnamenewfname은 서로 독립적인 스택 메모리 영역을 사용
  • newfname = "Jane" 변경 시 fname은 영향을 받지 않음

3. 힙 메모리 예시

  • let newPerson = person참조 복사로, newPerson.fname = "Jane" 변경 시 person.fname도 변경됨
  • 깊은 복사(deep copy)가 필요한 경우

4. 얕은 복사(Shallow Copy)

  • { ...person1 }최상위 객체만 복사, 중첩 객체는 참조 공유
  • person2.details.city = "Chicago" 변경 시 person1.details.city도 변경됨

5. 깊은 복사(Deep Copy)

  • JSON.stringify() + JSON.parse()중첩 객체까지 복제
  • let person2 = JSON.parse(JSON.stringify(person1))로 독립적인 객체 생성

6. 직렬화/역직렬화

  • 직렬화(serialization): 객체를 JSON 문자열로 변환 (JSON.stringify())
  • 역직렬화(deserialization): JSON 문자열을 객체로 복원 (JSON.parse())
  • API 통신, 로컬 스토리지 등에 활용

결론

  • 스택/힙 메모리 구분은 복제 로직 설계에 핵심
  • 깊은 복사JSON.stringify() + JSON.parse()로 구현, 중첩 객체 포함
  • 직렬화/역직렬화는 데이터 전송 및 저장 시 필수 기술