【发布时间】:2014-09-29 12:53:54
【问题描述】:
我在大型报告应用程序上使用 ehcache 2.8.2(从 1.6.2 迁移而来)。由于内存不足错误,我将配置从受元素数量 (maxElementsInMemory) 限制为限制在 cacheManager 级别上的堆内存 (maxBytesLocalHeap/maxBytesLocalDisk) 。不幸的是,这不是很好。
该应用程序有大约 100 个缓存(每个报告一个)。这样便于单独管理缓存。但是,当使用 maxBytes 配置来池化缓存之间的堆空间时,每个缓存只占用池的 1/100。应用程序在给定时刻大约有 5 或 6 个缓存在使用中,因此在我们的例子中,这种约束非常低效。
我们想做的是将 maxBytesLocalHeap 作为所有缓存的限制大小,但是每个缓存可以占用它需要的内存量,而不是限制为池大小的 1/100(也许使用 LRU跨缓存)。当然,所有缓存的大小总和应该小于池。
这可能与ehcache有关吗?在这种情况下,您会建议哪些替代方案?
【问题讨论】:
-
您在多大程度上使用了 EhCache 的功能?如果仅限于 get(K) 和 put(K, V),您也许可以创建单个缓存缓存。这个 single_cache 中的每个元素都是
标签: java caching memory ehcache