标识映射(Identity Map) 通过内存映射标志,确保每个对象只加载一次。 上面是定义,实际上就是在内存中维持一个对象缓存(通常是Map缓存),每次获取对象的时候,先到缓存中获取,不存在再访问数据库,当然需要考虑更新时的同步。这不是个什么新鲜东西,给一种常用的做法赋予一个深奥的名字就是大师们常干的事情。对于这个模式我没有太多个人的想法,只有以下2点: 1、Map的层次。如果一个对象会存在并发更新,则只能作为会话层缓存映射。如果一个对象属于只读对象,则可以作为全局缓存映射。在EAS的Cache中提供了CacheRegion的划分方式,结合Session对象,我们可以灵活定义映射层次。嗯,我认为Session是个好东西,如果不被滥用的话。 2、映射的大小:由于JAVA虚拟机的要求,在32位的服务端对内存是有严格要求的,基本上就在1.3G左右,以前元数据是做了映射缓存,可惜占用内存太多,被无情地Cut了,改为采用惰性加载+WeakReferrence的处理方式,我还是认为缓存起来比较好,以前也思考过对应的方案。其中和Anderson就讨论过是否可以通过专用的CacheServer来满足需求。以前没有集群方案,现在有了集群,似乎该方案开始具备可行行了
详细内容...