我正在从超过50+ Mbs的服务器检索XML响应。
在这里我使用了refortment,并在@Streaming
注解的帮助下,我将此响应直接保存到文件中,这样我就可以克服Out Of Memory Exception
。
到目前为止,这里一切看起来都很好,没有记忆问题。
现在我正在解析这个XML文件时,完全下载到Pojo类对象根据数据使用SAX XML Parser
,现在你可以想象,如果文件是50+ Mbs,那么有多大的对象。
在将此XML转换为Pojo类对象后,现在我将此对象传递给Gson
,以便他可以为我将此Object
转换为JSON
,然后,我将此JSON
字符串保存到一个单独的文件中。
同样,Gson
将在内存中执行所有这些操作,此时手机已耗尽,并抛出Out Of Memory Exception
,这是正确的,因为我们似乎从内存消耗的Angular 来看这一点
首先,他尝试将XML转换为Pojo类,
然后将此响应传递给Gson
以转换为JSON
,在此对话期间,他将所有这些数据放入内存中,然后将此传递给我,然后我将此传递给文件写入对象以进行存储..等等
在这一点上,它真的变得很大。
我的问题
有没有什么方法可以让Gson
直接把他的JSON
响应写到一个文件中,而不是保存到内存中?
1条答案
按热度按时间kgsdhlau1#
嗯,看起来这是为我工作,但它的速度较慢。
任何比这更好的解决方案都是受欢迎的。
好的,在这里我找到了一个比上面更好的解决方案,它比上一个快8倍。
在这里,所有的都是一样的,只是改变并将
BufferedWriter
对象传递给toJson
fun调用,而不是简单的FileWriter
。例如:
val writer = BufferedWriter(FileWriter(jsonFile))