MemStore is an in-memory IStore implementation.

This may seem an odd object to create but it does serve several valuable purposes.

Memory Efficiency

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.

Native Transaction Support

The in-memory backing store provides the state to support transactional updates, including rollback to previous state.

Performance

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.

Analysis Aid

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.