如何处理5 GB左右的大型XM File Java

时间:2017-06-12 01:17:51

标签: java xml bigdata

我的应用程序需要使用XML文件中的数据,该文件的大小最多为5 GB。我在XML中加载Image Classed中的数据。 Image类有许多属性,如Path,Name,MD5,Hash以及许多其他类似的信息。

5 GB文件中有大约5000万个图像数据,当我解析xml时,数据被加载到应用程序内部,并在应用程序内创建了相同数量的图像类,我对它执行不同的操作和计算。

我的问题是,当我解析这样一个休息文件时,我的记忆会消耗殆尽。我猜所有的数据都在ram里面加载。由于代码的复杂性,我无法提供整个代码。我有一种有效的方法来处理如此多的课程。我整夜都做过研究,但没有成功,有人能指出我正确的方向吗?

由于

2 个答案:

答案 0 :(得分:0)

您需要某种管道将数据传递到其实际目的地,而不必将其全部存储在内存中

我不知道您的代码如何进行解析,但您不需要将所有数据存储在内存中。

这是implementation阅读大型XML文件的一个非常好的答案

答案 1 :(得分:0)

如果你正在使用SAX,但是你正在吃掉内存,那么你做错了什么,如果没有看到你的代码,我们就无法告诉你你做错了什么。

我建议使用JVisualVM来获取堆转储并查看哪些对象正在耗尽内存,然后调查创建这些对象的应用程序部分。