dolog

가비지 컬렉션 1 본문

JavaScript/객체 : 기본

가비지 컬렉션 1

dokite 2022. 7. 19. 02:40

우리가 만드는 모든 것은 메모리를 차지한다

더는 쓸모 없게 된 것들을 어떻게 처리할까?

 

가비지 컬렉션 기준

  • JS는 도달 가능성(reachability) 라는 개념을 사용해 메모리 관리
  • 도달 가능한 값 : 어떻게든 접근하거나 사용할 수 있는 값
  • 도달 가능한 값은 메모리에서 삭제 되지 않는다
  • 가비지 컬렉터(garbage collector)가 끊임 없이 동작하여 모든 객체 모니터링, 도달 가능 X 객체 삭제

 

  1. 고정 도달 가능 값(root)

/ 현재 함수의 지역 변수와 매개변수

/ 중첩 함수의 체인에 있는 함수에서 사용되는 변수와 매개변수

/ 전역 변수

/ etc.

 

  1. root가 참조하는 값 또는 체이닝으로 루트에서 참조할 수 있는 값 ➡️ 도달 가능한 값

ex) 전역 변수에 객체 저장 ➡️ 객체의 프로퍼티가 또 다른 객체 참조 ➡️ 참조하는 객체가 도달 가능한 값 ➡️ 그 외 이 객체가 참조하는 다른 모든 것들도 도달 가능한 값

 

간단한 예시

 

ex)

// 전역 변수 user엔 객체 참조 값이 저장

let user = {

name: “Kim”

};

 

 user = null; // 참조가 사라진다, 즉 도달 가능 X 값으로 Kim이 메모리에서 삭제

 

참조 두개

 

ex) 참조를 user에서 admin으로 복사

 

let user = {

name: “Kim”

};

 

let admin = user;

 

// user를 null로 덮어씌우면?

user = null;

 

// user는 null, admin은 Kim이 그대로 남아있는다

// admin이라는 user의 프로퍼티가 담긴 새로운 객체가 생성되었기 때문

'JavaScript > 객체 : 기본' 카테고리의 다른 글

매서드와 this  (0) 2022.07.20
가비지 컬렉션 2  (0) 2022.07.20
참조에 의한 객체 복사  (0) 2022.07.18
객체 2  (0) 2022.07.17
객체 1  (0) 2022.07.15