java高速缓存大小设置_java – 如何让Ehcache为无限高速缓存保留堆大小字节数统计?...

我开始认为我要求的是Ehcache是​​不可能的(至少是我的版本)

这是net.sf.ehcache.Cache.class源代码中的池配置:

// on-heap pool configuration

Pool onHeapPool;

if (configuration.getMaxBytesLocalHeap() > 0) {

PoolEvictor evictor = new FromLargestCachePoolEvictor();

SizeOfEngine sizeOfEngine = cacheManager.createSizeOfEngine(this);

onHeapPool = new BoundedPool(configuration.getMaxBytesLocalHeap(), evictor, sizeOfEngine);

} else if (getCacheManager() != null && getCacheManager().getConfiguration().isMaxBytesLocalHeapSet()) {

onHeapPool = getCacheManager().getOnHeapPool();

} else {

onHeapPool = new UnboundedPool();

}

稍后将使用net.sf.ehcache.store.MemoryStore.MemoryStore(Ehcache,Pool,BackingFactory,SearchManager)从此池创建net.sf.ehcache.store.MemoryStore.以下行创建net.sf.ehcache.pool.PoolAccessor:

if (pool instanceof UnboundedPool) {

this.poolAccessor = pool.createPoolAccessor(null, null);

} else {

this.poolAccessor = pool.createPoolAccessor(new Participant(),

SizeOfPolicyConfiguration.resolveMaxDepth(cache),

SizeOfPolicyConfiguration.resolveBehavior(cache).equals(SizeOfPolicyConfiguration.MaxDepthExceededBehavior.ABORT));

}

由于池是UnboundedPool(未指定堆大小),因此创建的PoolAccessor没有net.sf.ehcache.pool.SizeOfEngine,但更重要的是类型为net.sf.ehcache.pool.impl.UnboundedPool.UnboundedPoolAccessor.此类型的add方法不跟踪大小,而为有界池创建的PoolAccessor类型也是如此. (参见net.sf.ehcache.pool.impl.AbstractPoolAccessor.add(Object,Object,Object,boolean)).

所以,对于Ehcache有一个我可以使用的设置而言,我运气不好,但是,如果像我一样,你正在寻求一个无限的缓存,那么实现这个解决方案有一种愚蠢的方法.下面将跟踪添加的内存统计信息,但会允许对缓存进行无限制的添加:

timeToIdleSeconds="1800"

memoryStoreEvictionPolicy="LRU"

overflowToDisk="false"

overflowToOffHeap="false"

maxBytesLocalHeap="1">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值