2011-09-01 4 views
2

현재 구아바 MapMaker와 호환되는지 또는 CacheBuilder를 사용하여 캐시가 최대 크기 내에 있는지 계산하는 함수를 제공하는지 알고 싶습니다.Guava CacheBuilder/MapMaker를 사용하여 사용자 정의 캐시 크기 계산

현재 축출은 단순히 .maximumSize() 값과 비교하여 캐시의 요소 수를 기반으로하는 것처럼 보입니다. 그러나 결과 맵을 매우 작거나 작은 비트 맵을 포함 할 수있는 비트 맵 캐시로 사용하고 싶습니다. 매우 큰 항목. 결과적으로 나는 사용중인 메모리 항목의 양을 기반으로 캐시 크기를 계산하고이를 바탕으로 캐시를 제거하는 기능을 제공 할 수 있기를 원합니다.

답변

5

우리는 현재 maximumSize(int)을 가지고 있지만 (해당 유형 그냥 int 또는 double을 반환하는 weigh(K, V) 방법이있다) maximumWeight(int, Weigher<K, V>)의 필요성을 평가하고있다. 체중이 무엇인지 생각해내는 것은 당신에게 달려 있습니다.

물론이 기능은 밤새 나타나지 않습니다.

+1

내가 필요한 것 같은데,이 기능에 대한 투표라고 생각해. –

3

JavaDocs에서 CacheBuilder에 대해 CacheBuilder 클래스 나 MapMaker 클래스에 최대 메모리 사용량을 지정할 방법이 없다고합니다. 최대 요소 수만 설정할 수 있습니다.

캐시 프레임 워크 (예 : EhCache)를 사용하면 캐시에서 사용할 힙 (및/또는 디스크 공간)의 최대 크기를 지정할 수 있습니다. EhCache에서는 이러한 종류의 동작을 지정하기 위해 maxBytesLocalHeap 및/또는 maxBytesLocalDisk 빌더 메소드를 사용할 수 있습니다. 자세한 내용은 JavaDocs CacheConfiguration을 참조하십시오.