-Dnet이 없을 때 내 웹 응용 프로그램에서 Ehcache 2.8.8의 LRU 정책 인 을 사용하고 있습니다. sf.ehcache.use.classic.lru = true Ehcache는 내 maxBytesLocalHeap 매개 변수를 사용합니다. 이지만 시스템 등록 정보가 설정되어 있으면 그렇게하지 않습니다. 클래스 캐시에-Dnet.sf.ehcache.use.classic.lru = true를 사용할 때 Ehcache 2.8.8에서 maxBytesLocalHeap 매개 변수를 무시하는 이유
:
if (useClassicLru && onfiguration.getMemoryStoreEvictionPolicy().
equals(MemoryStoreEvictionPolicy.LRU)) {
Store disk = createDiskStore();
store = new LegacyStoreWrapper(new LruMemoryStore(this, disk),
disk, registeredEventListeners, configuration);
} else {
if (configuration.isOverflowToDisk()) {
store = DiskStore.createCacheStore(this, onHeapPool,
onDiskPool);
} else {
store = MemoryStore.create(this, onHeapPool);
}
}
그리고 클래스 LruMemoryStore에서
:public LruMemoryStore(Ehcache cache, Store diskStore) {
status = Status.STATUS_UNINITIALISED;
this.maximumSize =
cache.getCacheConfiguration().getMaxEntriesLocalHeap();
this.cachePinned =
determineCachePinned(cache.getCacheConfiguration());
this.elementPinningEnabled =
!cache.getCacheConfiguration().isOverflowToOffHeap();
this.cache = cache;
this.diskStore = diskStore;
if (cache.getCacheConfiguration().isOverflowToDisk()) {
evictionObserver = null;
} else {
evictionObserver =
StatisticBuilder.operation(EvictionOutcome.class).
named("eviction").of(this).build();
}
map = new SpoolingLinkedHashMap();
status = Status.STATUS_ALIVE;
copyStrategyHandler = MemoryStore.getCopyStrategyHandler(cache);
}
그래서 내가 추측 만 MaxEntriesLocalHeap는 효과가?
jvm 시스템 속성으로 설정할 수 있습니까?
클래식 LRU를 선택하면 어떤 페널티가 있습니까? DiskStore와 MemoryStore의 주요 차이점은 무엇입니까? – user1532146
DiskStore를 사용할 때 Ehcache가 로컬 디스크를 사용한다는 의미입니까? 그렇다면 얼마나 자주 사용합니까? 그리고 얼마나 많은 공간을 로컬 디스크에 준비 할 필요가 있습니까? – user1532146
고전적인 LRU 축출 정책이있는 힙 메모리 저장소 만 원할 때 가장 좋은 솔루션은 무엇입니까? – user1532146