Java 压缩并序列化内存中的大型哈希映射
我的内存中有一个很大的HashMap(~700-800MB)。我想将数据序列化为哈希映射,然后对其进行压缩。将此类对象转换为流的最有效方法是什么? 我现在要做的是:Java 压缩并序列化内存中的大型哈希映射,java,json,scala,serialization,compression,Java,Json,Scala,Serialization,Compression,我的内存中有一个很大的HashMap(~700-800MB)。我想将数据序列化为哈希映射,然后对其进行压缩。将此类对象转换为流的最有效方法是什么? 我现在要做的是: inputMap: Map[String, Any] inputMapToSerializeJsonUsingJackson: Array[Byte] private def encodeGzip(bytes: Array[Byte]) = { val baos = new ByteArrayOutputStream val
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
}
如果您处理的是大的哈希图,您可能需要考虑其中一个非股票HasMMAP实现,它可以有更好的性能。对于你的用例,考虑一些类似的东西,可以在内存中更有效地压缩数据,也可以用磁盘文件来恢复数据。但是,如果我可以问一下的话,你到底要用内存中的gzip字节数组做什么呢???