I am looking for a JVM library implementing ConcurrentHashMap to store large map in local memory. Expected to have 20,000,000 items in this map with overall size of 2-3 Gb. No need to distribute data set across hosts.

Load mostly reads with a few writes. Infrequient writes are snapshot updates when whole map content should be replaced with new data.

Would prefer a library with a minimum of dependencies to simplify integration. Would be nice to re-package the library with jarjar for re-distirbution inside my own package.

So far I encountered * ChronicleMap * Apache Ignite * Hazelcast

Could you please recommend which one of those fit my use case better?

2 Answers 2



For your problem I recommend hazelcast.


  • Made for extensive read operations.
  • Allow you to write custom serialization and deserialization classes which decrease CPU cost while reading and writing.


  • Allow you to run SQL query on top of your map.

  • Allow you to make indexes on map variables which makes custom retrieval so fast.


  • Only a single jar is enough to make hazelcast environment.

MapDb appears to be what you're looking for.

  • Welcome Igor! Please add to your answer why MapDb appears to be what the OP is looking for. Thanks! Commented Jan 5, 2020 at 2:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.