OffHeap Store is a library that provides a set of map and cache implementations that store data outside of the normal Java heap. Additionally it provides a bunch of interesting things to support these functions that might be interesting in isolation to some people.
Licensed under the Apache License, Version 2.0 © Terracotta, Inc., a Software AG company.
See also: http://www.github.com/ehcache/ehcache3
On the surface OffHeap Store contains implementations of:
-
Map (non thread-safe)
-
ConcurrentMap (single stripe or segmented; read-write locked or exclusively locked)
-
Set (but use Collections.newSetFromMap(Map) instead)
-
Clock Cache (single stripe or segmented; read-write locked or exclusively locked)
Additional functionality includes:
-
Cache Entry Pinning
-
Eviction Listeners
-
Non-fault tolerant disk backend
Things that might be interesting to some:
-
Per entry metadata (very basic API)
-
Serialization optimization (redundant ObjectStreamClass descriptor compression)
-
Native heap-alike implementation (OffHeapStorageArea)
-
A (crude) weak identity hash map (because the world needed one more)
Like all software OffHeap Store is just a big stack of abstractions, rough structure starting at the bottom and working up.
BufferSource |
ByteBuffer factories [org.terracotta.offheapstore.buffersource] |
PageSource |
Page factories, that uses ByteBuffers) [org.terracotta.offheapstore.paging] |
OffHeapStorageArea |
native heap-alike that uses pages) |
StorageEngine |
provide storage for POJOs, some use OffHeapStorageArea) |
OffHeapHashMap |
core map implementation, uses storage engine for K/V storage and a page for the hashtable. |
a million subclasses |
all the map derivatives: concurrent, evicting (caches), et al. |