我正在寻找一个简单的内存(和进程内)缓存,用于查询数据的短期缓存(但短期含义超出请求/响应,即会话边界)。EhCache 可能会起作用,但看起来它可能无法提供我需要的一件事:不是对缓存对象数量的限制,而是对缓存数据消耗的内存量的(近似)限制。
我知道在没有序列化的情况下很难计算出给定对象的确切内存使用情况(在一般情况下,我想避免这种情况,因为它的速度很慢,违背了我的使用目的),我可以自己提供大小估计。
那么:是否有一个简单的开源 Java 缓存允许定义缓存对象的“权重”,以限制缓存的内容数量?
编辑(2010 年 11 月):值得一提的是,有一个名为Java CacheMate的新项目试图解决这个问题,以及其他一些改进想法(多级内存进程内缓存)