BigMemory系列文章--3. Ehcache存储层级(tier)

转载请注明出处哈:http://carlosfu.iteye.com/blog/2237511


 

一、Ehcache存储层级示意图:

 

二、层级说明

 

1、MemStore(通常指堆内存储)

(1) 堆内存储,受制于GC

(2) 理论上最快,可以存储序列化和非序列化数据

(3) 线程安全

(4) 如果使用了OffHeapStore,那么MemStore保存The hottest subset of data from thre OffHeapStore.

 

2、OffHeapStore(堆外内存:被称为BigMemory):

有关堆外内存:可以参考如下文章:http://calvin1978.blogcn.com/articles/directbytebuffer.html

只在企业版本的Ehcache(BigMemory)中提供,原理是利用nio的DirectByteBuffers实现,比存储到磁盘上快,而且完全不受GC的影响,可以保证响应时间的稳定性;但是direct buffer的在分配上的开销要比heap buffer大,而且要求必须以字节数组方式存储,因此对象必须在存储过程中进行序列化,读取则进行反序列化操作,它的速度大约比堆内存储慢一个数量级。

(注:direct buffer不受GC影响,但是direct buffer归属的的JAVA对象是在堆上且能够被GC回收的,一旦它被回收,JVM将释放direct buffer的堆外空间。)

(1) 堆外内存,不受制于GC

(2)  只在Bigmemory中能用,Ehcache不支持。

(3) 堆外内存使用字节码存储,所以只能存储序列化数据

 

3、DiskStore(磁盘存储):

(1) 只能存储序列化的数据。

(2) 此数据层是可选的,不是必须的

 

猜你喜欢

转载自carlosfu.iteye.com/blog/2237382