mapdb的适用场景介绍

2022-04-13 00:00:00 专区 订阅 就会 这个时候 外存

 对于大部分系统来说,mapdb(而且新版本还依赖于kotlin,增加了不少额外的jar)并无太大价值,而且增加了成本。但是如果一级缓存巨大例如数以十GB级别,或占据了整个JVM的1/2以上,mapdb的价值就会体现出来。正如其官网介绍:

  MapDB provides Java Maps, Sets, Lists, Queues and other collections backed by off-heap or on-disk storage. It is a hybrid between java collection framework and embedded database engine.

  使用MapDB存储map后,jvm gc的压力就会大大减少(在大数据中,gc甚至可能停顿超过1分钟,没看错,导致应用完全无响应)。但是因为堆外存储的都是字节形式,所以会增加序列化和反序列化的资源消耗,这个时候二进制而非json的序列化算法就非常重要了,包括性能以及大小,如flatbuffer、kryo。所以,更好的做法是常用的在堆内存储、不常用的在堆外存储,可能这个时候ehcache就是一种更好的选择。

相关文章