Ehcache (버전 2.5)가 항목을 잊어 버리지 않도록 구성하려고합니다. 프로그래밍 방식으로 구성 중이며 구성 XML 파일 중 하나도 다루지 않았습니다. eternal
을 true
으로 설정하면 디스크 공간이 부족하거나 maxBytesLocalDisk
(또는 응용 프로그램이 종료 된 경우)을 초과하면 항목을 캐시에서 제거 할 수있는 유일한 상황이라는 것을 알고 있습니다.Ehcache는 영원히 설정되었지만 어쨌든 요소를 잊었습니까?
public static void main(String[] args) {
CacheManager cacheManager = CacheManager.create();
Cache cache = new Cache(
new CacheConfiguration().name("test")
.overflowToDisk(true)
.eternal(true)
.maxBytesLocalHeap(1, MemoryUnit.MEGABYTES)
.overflowToOffHeap(false)
.maxBytesLocalDisk(100, MemoryUnit.GIGABYTES)
.maxElementsOnDisk(0)
.timeToIdleSeconds(0)
.timeToLiveSeconds(0)
.diskStorePath("E:\\Data\\Ehcache"));
cacheManager.addCache(cache);
for(int i = 0; i < 1000000; i++){
cache.put(new Element("key_" + i, "value_" + i));
}
System.out.println(cache.getSize());
}
그래서 크기 순서에 의해 충분히 큰 디스크에 오버플로 말했다 내 캐시에 1 개 백만 요소를 추가 한 후, 나는 단지와 끝까지 : 그러나,이 테스트 프로그램은 그 동작을 표시하지 않습니다 끝에 3276 항목. 여기서 무슨 일이 일어나고있는거야?
을 조사 할 수 있습니다; 나는 디스크에 넘칠 필요가 생길 때까지 그렇게 할 수 있도록 설정했습니다. 몇 GB의 힙을 사용할 예정이지만 요소를 절대 잊지 않도록 구성했는지 확인하고 싶습니다. –
이 질문에 답을 얻은 것 같아요. [내 새로운 질문을보십시오] (http://stackoverflow.com/q/8980467/387852) 엘리먼트 **가 절대로 ** 얻을 수 없는지 확인하십시오. 디스크 스토어에서 퇴출되었습니다 (무료 버전). –