我在Netbean中运行SAX Parser来提取1GB的XML数据并写入CSV文件。
当我使用小于1MB的测试数据时,我的程序运行正常。代码运行显示我预期的打印输出和生成的CSV文件是正确的。
接下来我用1GB XML运行我的代码。代码正在运行并显示预期的输出大约30分钟(它能够成功地一直读到XML中的105439行),
之后,输出刚停止显示。在Netbean的底部,它表示该程序正在运行,尽管绿色条形停止流动。这持续了半个小时的虚无
因为没有显示错误,我无法判断它是否仍在读取XML,或者由于内存不足导致程序被挂起。
我的代码长900行。但这里是我写作的总结:
我使用Array存储元素,写入CSV,然后重新使用Array。
public static String authorArray[] = new String[2];
Set用于检查重复的作者。由于可以有1GB的作者,我不确定authorSet是否可能导致内存问题。
public static Set<String> authorSet = new HashSet<String>();
最后,我使用Hashmap将作者姓名与ID联系起来,以便将他所写的书联系起来。再次可能有1GB的作者,所以这需要存储很多。
public static Map<String, Integer> authorNameIDMap = new HashMap<String, Integer>();
当我成熟地终止该程序时,最多存储了6534位作者(仅占整个XML作者的20%)
请帮忙!我真的想知道该计划的所在。提前致谢