ehcache中的动态高速缓存大小

时间:2014-08-06 14:23:06

标签: java caching memory ehcache

我在大型报表应用程序中使用ehcache 2.8.2(从1.6.2迁移)。由于内存不足错误,我将配置从缓存管理器级别的元素数量(maxElementsInMemory)更改为绑定到堆内存(maxBytesLocalHeap / maxBytesLocalDisk)。不幸的是,这种方法效果不佳。

该应用程序有大约100个缓存(每个报告一个)。这样可以方便地单独管理缓存。但是,当使用maxBytes配置汇集缓存之间的堆空间时,每个缓存仅占池的1/100。该应用程序在给定时刻将使用大约5或6个缓存,因此在我们的情况下,这种约束效率非常低。

我们想要做的是将maxBytesLocalHeap作为所有缓存的限制大小,但每个缓存可以占用所需的内存量,而不受限于池大小的1/100(也许使用LRU)跨缓存)。当然,所有缓存的大小总和应小于池。

这可能与ehcache有关吗?在这种情况下,您会建议哪些替代方案?

1 个答案:

答案 0 :(得分:0)

您可以尝试监控虚拟机中的可用内存并分别调整EhCache CacheInstance CacheConfiguration。当内存较少时减少它们,并在更多内存时增加它们。