压缩并序列化内存中的大型HashMap

时间:2016-03-16 00:20:55

标签: java json scala serialization compression

我的内存中有一个很大的HashMap(~700-800MB)。我想将数据序列化为哈希映射,然后压缩它。将此类对象转换为Stream的最有效方法是什么? 我现在做以下事情:

inputMap: Map[String, Any]
inputMapToSerializeJsonUsingJackson: Array[Byte]
private def encodeGzip(bytes: Array[Byte]) = {
  val baos = new ByteArrayOutputStream
  val gos = new GZIPOutputStream(baos)
  try {
    gos.write(bytes)
  } finally {
    gos.close()
  }
  baos
}

1 个答案:

答案 0 :(得分:1)

如果您正在处理大型的哈希映射,您可能需要考虑一种可以获得更好性能的非库存哈希映射实现。对于您的用例,请考虑MapDb之类的内容,它可以在内存中更有效地压缩数据,并使用磁盘文件备份数据。