我在阅读大型XML
个文件“100 MB”时遇到问题并使用xstream
解析它总是出现以下错误
java.lang.OutOfMemoryError: Java heap space error occurs,
这是解析XML的代码
XStream xstream = new XStream(); xstream.processAnnotations(Class.forName((String)ClassName));
ClassName是一个普通类,其字段包含xml注释。
然后使用
Object resultDto = xstream.fromXML((String)fileString);
fileString:将xml文件作为输入流读取后放入字符串缓冲区。
上面的代码适用于小文件,但不适用于大文件,请问有什么想法吗?
答案 0 :(得分:2)
不要将文件转换为String然后使用Xstream,而是直接使用输入流或文件阅读器。 XStream.fromXML
采用File,InputStream,FileReader之类的各种输入,直接操作,无需先将File的文本表示形式加载为String。
答案 1 :(得分:1)
据我所知,有两种解决方案:
最后,数据可能太大而不适合。
答案 2 :(得分:0)
您可以使用运行时参数运行解析程序吗? 在这种情况下,添加参数 -xmx512M -xms512M 应该可以解决问题,因为它会增加堆大小。
答案 3 :(得分:0)
尝试增加java头部内存。 如果你正在使用eclipse。 然后有eclipse,ini文件就在那里,
增加头部尺寸。
-XX:MaxPermSize=1024m
-Xms512m
-Xmx1024m
答案 4 :(得分:0)
RAM大小是多少?如果你有更多的RAM使用 -
为你的JVM分配更多Xms512m -Xmx2g -XX:PermSize=512m -XX:MaxPermSize=2g
如果你有8GB的RAM,你可以按照上面的例子分配它分配2GB最大堆内存和2GB最大PermGen空间,所以总共4GB。或者根据你的RAM