我的内存中有一个很大的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
}
答案 0 :(得分:1)
如果您正在处理大型的哈希映射,您可能需要考虑一种可以获得更好性能的非库存哈希映射实现。对于您的用例,请考虑MapDb之类的内容,它可以在内存中更有效地压缩数据,并使用磁盘文件备份数据。