Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 压缩并序列化内存中的大型哈希映射_Java_Json_Scala_Serialization_Compression - Fatal编程技术网

Java 压缩并序列化内存中的大型哈希映射

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

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

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字节数组做什么呢???