본문 바로가기
개발/TTL

[JS][자바스크립트]워크맵과 워크셋

by ISA(류) 2021. 7. 5.

1. 위크맵과 위크셋 (javascript.info)

 

위크맵과 위크셋

 

ko.javascript.info

 

가비지컬렉션에서는 맵이나 셋의 키로 사용된 객체의 경우 해당 맵이나 셋이 존재할시 메모리에서 해제 되지 않는다.

위크맵은 키로 객체만을 사용 가능한 맵이다. GC에 관한 문제로 기본적인 이터러블 메서드를 제공하지 않는다.

부가적인 데이터나 캐싱등의 기능을 개발할때 따로 관리 할 필요가 없어서 유용한 편이다.

위크셋은 위크맵과 마찬가지로 객체만 저장 가능한 셋이다. 마찬가지로 이터러블 메서드를 제공하지 않는다.

그 외는 같다.

 

# 사용법

1. new WeakMap(); new WeakSet(); 생성한다.

2. 이터러블 관련된 메서드인 엔트리, 벨류, 키를 지원하지 않는다.

3. 특정 객체에 대한 추가적인 데이터 또는 캐싱등 GC에 의해서 정리 되는게 나은 데이터들을 저장한다.

 

# 결론 

객체엔 ‘주요’ 자료를, 위크맵과 위크셋엔 ‘부수적인’ 자료를 저장하는 형태로 위크맵과 위크셋을 활용할 수 있습니다. 객체가 메모리에서 삭제되면, (그리고 오로지 위크맵과 위크셋의 키만 해당 객체를 참조하고 있다면) 위크맵이나 위크셋에 저장된 연관 자료들 역시 메모리에서 자동으로 삭제된다. 심볼이랑 비슷한 컨셉인듯하다. 기존 객체에 영향을 주지 않으면서도 추가적인 정보를 주입 할 수 있는 도구들.

 

반응형