cache的实现无非是通过使用容器类型的数据结构(如map)把经常需要使用的数据存储到内存中,进行管理;包括数据的查看,同步,删除(过期机制)等。
有个疑惑:
1、JVM会去扫描cache所在区域并根据一定的GC策略去回收内存,如果cache中的数据还没到设定的过期时间(假设cache根据设定的过期时间进行淘汰)就被GC掉了,岂不是白cache这些数据了又被干掉了?
2、jvm是否存在不会被GC扫描的区域(编程可用的),如果有,在哪里? 如果没有,那oracle是否有计划未来增加这样的特性:设置一个区域,专门用来存储程序启动时需要加载的一些数据,GC不会光顾;这样的话,实现cache效率会更高,也更可控。