MemStore is an in-memory IStore implementation.
This may seem an odd object to create but it does serve several valuable purposes.
Compared to a TransientObjectMgr that retains a reference to all created
objects within its running object table, a MemStore back OMStore
object manager will use perhaps one sixth the memory.
This benefit is achieved because of the memory overhead of java objects. For
example, a reference to a GPO object requires 24 bytes of java memory, but
may only need 2-3 bytes when saved to a backing IStore.
The in-memory backing store provides the state to support transactional updates, including
rollback to previous state.
MemStore provides an interesting configuration option between a
TransientObjectMgr a "real" file-backed IStore.
Interestingly though, there does not appear to be a huge benefit gained by using the
MemStore over a conventional store where the file is completely cached
by the operating system. At present a 10% improvement of object access time seems the
most that can be expected. This will be the subject of further investigation.
In the development of the IStore implementations the MemStore is
proving extremely useful in analysing and improving performance issues. This has already
lead to significant enhancements in object retrieval.