0
我在web應用中使用Ehcache 2.8.8的LRU策略,當沒有-Dnet時使用 。 sf.ehcache.use.classic.lru = true Ehcache尊重我的maxBytesLocalHeap參數; 但在設置系統屬性時不這樣做。爲什麼Ehcache 2.8.8在使用-Dnet.sf.ehcache.use.classic.lru = true時忽略我的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