개요
WeakMap은 키에 약한 참조를 사용하는 맵을 구현하는 Dart 패키지로, 다른 참조가 없을 경우 키 객체를 가비지 컬렉션할 수 있게 해줍니다. 메모리 누수를 방지하여 효율적인 메모리 관리를 가능하게 합니다. WeakContainer는 객체의 정체성을 확인하여 이전과 동일한 인스턴스임을 보장합니다. 이 패키지는 약한 참조를 사용해 캐시 함수를 통해 메모이제이션을 지원하며, 일시적인 데이터 저장에 적합합니다. 장시간 실행되는 애플리케이션에서 성능과 안정성을 고려해 설계되었습니다.
사용 사례
- 자동 정리가 가능한 메모이제이션
- 누수 없이 객체 정체성 추적
- 임시 객체와 연결된 결과 캐싱
- 콜백에서 메모리 누수 방지
- 인스턴스별 메타데이터 저장
- 임시 상태 관리
주요 기능
- 약하게 참조된 키
- 가비지 수집 가능한 항목
- 신원 기반 객체 검사
- 내장된 메모이제이션 유틸리티
- 크로스 플랫폼 지원
- 가볍고 빠름
적합한 대상
- 자주 객체를 생성하는 장시간 실행 앱
- 메모리 민감한 애플리케이션
- 인스턴스별 데이터가 필요한 플러그인
- 개발자들이 강한 참조 사이클을 피하는 방법
- 일시적인 데이터 저장이 필요한 사용 사례
- 고성능 캐싱
고려 사항
- 키는 예기치 않게 수집될 수 있습니다
- 지속 데이터에 적합하지 않습니다
- 직접적인 반복 또는 크기 접근 없음
- 객체 키 기반 저장에 제한됨
- 비동기 컨텍스트에서 주의 깊게 다뤄야 합니다
- 일시적 또는 단기적인 객체와 함께 사용하는 것이 가장 좋습니다