1 minute read

JS 엔진은 가비지 컬렉션 으로 메모리 관리

복합 자료구조의 요소도 자신이 속한 자료구조가 메모리에 남아있을 동안(참조하는 값이 없어도) 대개 도달 가능한 값으로 취급되어 가비지 컬렉터가 건들이지 않고 메모리 유지 가능

위크맵, 위크셋 사용 시 키로 쓰인 객체가 가비지 컬렉션 대상 됨

가비지 컬렉션이 일어나는 시점을 JS 엔진이 결정하기 때문에 현재 요소가 몇개 있는 지 정확히 알 수 없기 없어서 모든 요소를 대상으로 무언가를 하는 메서드(반복 작업 관련 메서드) 동작 불가능

반복 작업 불가능함이 위크맵, 위크셋 이용해 할 수 있는 주요 작업 방해하지 않음.

객체와 함께 ‘추가 데이터’ 저장하는 용도로 사용가능

  • 위크맵

    맵과 유사하지만 객체만 키로 저장 가능

    키로 사용된 객체는 참조하는 것이 아무것도 없을 시 해당 객체는 메모리와 위크맵에서 자동으로 삭제

    • 메서드

      weakMap.get(key)
      
      weakMap.set(key, value)
      
      weakMap.delete(key)
      
      weakMap.has(key)
      
    • 유스 케이스

      • 추가 데이터

        부차적인 데이터 저장할 곳 필요할 때 진가 발휘

        데이터는 객체가 살아있을 동안 유효한 상황일 때 유용.

      • 캐싱

        시간이 오래 걸리는 작업의 결과를 저장해서 연산 시간과 비용 절약할때 쓰는 기법.

        연산 결과가 필요없어 졌을때 (객체가 삭제됐을 때) 위크맵쓰면 자동으로 삭제되므로 유용.

  • 위크셋

    셋과 유사하지만 객체만 저장할 수 있음

    데이터로 사용된 객체는 참조하는 것이 아무것도 없을 시 해당 객체는 메모리와 위크맵에서 자동으로 삭제

    복잡한 데이터 저장하지 않음

    • 메서드

      weakSet.add()

      weakSet.has()

      weakSet.delete()

    • 유스 케이스

      부차적인 데이터 저장할 때 사용

요약

  • JS 엔진은 가비지 컬렉션으로 메모리 관리

  • 복합 자료 구조의 요소는 참조값 없어져도 메모리 유지되며 가비지 컬렉터가 건들지 않음

  • 위크맵, 위크셋 사용 시 참조값 없는 객체는 가비지 컬렉터로 처리 가능

  • 가비지 컬렉션이 일어나는 시점을 JS 엔진이 결정하기 때문에 현재 요소가 몇개 있는 지 정확히 알 수 없기 때문에 반복 작업 불가능

  • ‘추가 데이터’ 저장하는 용도로 유용

  • 위크맵은 객체만 키로 저장 가능하며 메서드는 반복 작업 제외

  • 위크셋은 객체만 저장 가능하며 메서드는 반복작업 제외

Categories: ,

Updated: