此文只对磁盘缓存方式进行展述
hibernate执行sql,将数据转化为映射实体类后会进行数据缓存,其中调用AbstractRowReader#performTwoPhaseLoad方法时,会循环数据集,调用TwoPhaseLoad.initializeEntity();该方法会调用ehcache的put方法进行数据缓存。
ehcache在put数据实例(数据实例已转化为Element实例对象),该对象到磁盘时(此时内存缓存已满,按照ehcache.xml中设定的策略,超过部分存储在磁盘),会判断当前disk store spool is full,如果已满,需进行50ms的sleep,降低生产线程放入的速度。
Cache.class
/**
* Put an element in the cache.
* <p/>
* Resets the access statistics on the element, which would be the case if it has previously been
* gotten from a cache, and is now being put back.
* <p/>
* Also notifies the CacheEventListener that:
* <ul>
* <li>the element was put, but only if the Element was actually put.
* <li>if the element exists in the cache, that an update has occurred, even if the element would be expired
* if it wa
版权声明:本文为baidu_41669919原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。