在Java Spring中处理大型XML文件

时间:2018-03-27 08:47:12

标签: java spring

我有一个Java程序(战争)在操作大型XML文件时内存不足。 该程序是一个REST API,它通过REST控制器返回被操纵的XML。

首先,程序从远程URL获取XML文件。 然后它替换id属性的值。 最后,它通过API控制器将新XML返回给调用者。

我从远程URL获得的是带有XML数据的byte[]正文。 然后,我将其转换为String。 接下来,我对整个字符串执行regexp search-replace。 然后我将其转换回byte[]

我猜测XML现在在内存中3次(传入的字节,字符串和传出的字节)。

我正在寻找改进方法。

我在文件系统btw上没有本地副本。

1 个答案:

答案 0 :(得分:0)

将字节转换为String后,您可以从内存中删除传入的字节:

byte[] bytes = bytesFromURL;
String xml = new String(bytes);
{...manipulate xml}
bytes = null;
System.gc();
bytes = xml.getBytes();