现有设计:
两层HashMap结构
ClientKey---(CacheKey---XCache)
每次取缓存的时候通过ClientKey和CacheKey找到对应的XCache对象。
现在的设计是另外起一个轮询线程,为每个Client设置一个ClientActiveTime,为每个XCache设置一个CacheActiveTime。每隔一段时间检查当前时间减去ActiveTime是否大于超时时间,当然在扫描过程中是对这两层结构加锁的。
如果Client超时,则所有的XCache清除,或序列化保存。
如果XCache超时,则只清除当前的XCache对象,或序列化保存。
因为XCache引用的对象不小,所以当用户很多的时候会造成系统缓慢,甚至OOM,现请教高手:
1.有没有更好的设计来对XCache进行缓存?
2.这种定时轮询的方式是不是合理,有没有别的方式进行检查?
3.如果使用EHCache或者MemCache会在哪些方面带来优势(因为当前代码是可控的,用第三方的话不知道会不会带来其他问题。)
望赐教,感谢!