weakref 모듈에 대한 공식 Python 설명서에 따르면 "약한 참조의 기본 용도는 대형 객체를 포함하는 캐시 또는 매핑을 구현하는 것입니다.". 그래서 WeakValueDictionary를 사용하여 장기 실행 함수에 대한 캐싱 메커니즘을 구현했습니다. 그러나 캐시에서 값이 실제로 다시 사용될 때까지 캐시에 남아 있지 않았지만 거의 언제나 다시 계산해야했습니다. WeakValueDictionary에 저장된 값에 대한 액세스 간에는 강력한 참조가 없었으므로 GC는 메모리에서 아무런 문제가 없었음에도이를 제거했습니다.캐시에 WeakValueDictionary를 사용할 때의 GC 관련 문제
이제 약한 참조 자료를 사용하여 캐시를 구현해야하는 이유는 무엇입니까? GC에서 약한 참조를 삭제하지 않도록 명시 적으로 어딘가에 유지한다면 WeakValueDictionary를 처음 사용하는 것이 아닙니다. 메모리를 다 써 버렸을 때 (또는 약간의 임계 값을 초과 할 때) 참조가 전혀없는 모든 것을 삭제하고 약한 참조가있는 모든 것을 삭제하십시오. 그런 것이 있습니까? 아니면 이런 종류의 캐시를위한 더 나은 전략이 있습니까?