2016-08-01 9 views
0

-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 시스템 속성으로 설정할 수 있습니까?

답변

0

classic LRU을 명시 적으로 요청하면 일부 사용자의 행동에 따라 달라 지므로 이전 버전의 내부 코드가 실제로 보존됩니다.

이것은 힙 계층의 크기를 바이트 단위로 조정하는 것을 포함하여 이후에 소개 된 기능을 효과적으로 사용할 수 없음을 의미합니다.

그렇기 때문에 maxEntriesLocalHeap 만 힙 계층의 크기를 조정할 수 있습니다. 그리고 이것은 시스템 속성을 통해 설정할 수 없습니다.

+0

클래식 LRU를 선택하면 어떤 페널티가 있습니까? DiskStore와 MemoryStore의 주요 차이점은 무엇입니까? – user1532146

+0

DiskStore를 사용할 때 Ehcache가 로컬 디스크를 사용한다는 의미입니까? 그렇다면 얼마나 자주 사용합니까? 그리고 얼마나 많은 공간을 로컬 디스크에 준비 할 필요가 있습니까? – user1532146

+0

고전적인 LRU 축출 정책이있는 힙 메모리 저장소 만 원할 때 가장 좋은 솔루션은 무엇입니까? – user1532146