轉載請注明出處哈: 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) 此資料層是可選的,不是必須的。