请教关于jive缓存的问题,大家来帮忙啊
jive中的缓存机制是根据使用大小来控制是否该将一个新创建的对象加入
到内存池中的。每个需要被缓存的对象必须implements Cacheable接口,
并且实现getSize()方法返回该对象占用的内存大小,供回调时使用。
对于只是由类型(String, int, long...)组合而成的对象使用起jive的
缓存机制能够比较准确的控制内存的使用,但是对于一个业务对象是由
其他几个业务对象组合而成的情况就很难控制内存使用量了,例如:
有A,B三个类,只有A需要缓存
class A implements Cacheable {
B b = new B();
String s = "aaa";
public void getSize() {
//这里就无法精确返回A对象的大小了
return 4+s.length*2;
}
}
class B {}
这样,如果B的对象越大,那么误差越大,除非B也实现Cacheable接口,
并且在A.getSize()中调用B.getSize(),可很难确定在具体应用中业务
对象的包含层次以及数量,所以如果想精确控制,就需要将所有被用到
的业务对象都实现Cacheable,也就是很多本不需要实现cacheable的类
也被迫实现该接口,如果业务对象关系复杂,且种类繁多,那么如果想
达到精确控制,显然比较繁琐
我想,如果想比较精确的控制,对于jive这个cache实现机制,只能自己
不厌其烦的实现Cacheable,因为实现机制是根据容量来控制的,所以
getSize()方法是保证控制精确性的必要条件。
1. 如果我仍然想基于内存使用量来控制,请问有没有更好的实现机制?
2. 有没有其他非(1)的好的缓存实现思路或已成型的框架?
3. 用于优化缓存的比较好的思路?
多谢!