我在 Netbean 中运行 SAX 解析器以提取 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%)
请帮忙!我真的很想知道程序在哪里。提前致谢