LRU 캐시를 구현했습니다. 새 항목을 삽입하는 과정은 다음과 같습니다.LRU 캐시에서 "대량 이탈"방지
- haystack에 충분한 공간이 있는지 확인하십시오. 예인 경우 4로 이동하십시오.
- 가장 최근에 사용한 적이없는 항목을 제거하십시오.
- 충분한 공간이 있는지 확인하십시오. 그렇지 않다면 2를 반복하십시오.
- 빈 공간에 항목을 삽입하십시오.
항목은 건초 더미에서 효과적으로 무작위로 정렬됩니다.
이전 항목보다 큰 항목을 삽입해야하는 경우 문제가 발생합니다. 그것은 "대량 퇴거 (mass eviction)"로 이어진다. 여기서 충분한 항목이 축출 될 때까지 계속되는 퇴화 과정을 거치면서 몇 개의 인접한 아이템이 퇴거되었다.
이 "대량 이탈"은 종종 수만 가지 항목을 퇴치하는 것을 포함합니다.
이 "대량 퇴거"를 피하거나 완화하기 위해 수행 할 수있는 조치는 무엇입니까?
왜 캐시가 contiguos 메모리로 구현 되었습니까? 포인터와 좋은 할당 자 라이브러리를 사용할 수 없습니까? –