为了账号安全,请及时绑定邮箱和手机立即绑定

在java中读取2GB xml文件时出现OOM错误

在java中读取2GB xml文件时出现OOM错误

波斯汪 2021-10-06 11:03:24
我一直在尝试读取一个 2GB 的 XML 文件。我采用了不同的方法来读取它,但是这些方法中的每一种都让OutOfMemoryError我什至尝试将 eclispe 中的堆大小最大值增加到 4GB,将堆大小最小值增加到 2GB,但问题仍然存在。我该如何解决这个问题?我不想使用任何第三方 libaray。以下是我迄今为止尝试过的代码String str = new String(Files.readAllBytes(Paths.get(pathname)),                    StandardCharsets.UTF_8);和try(Scanner scanner = new Scanner(new File(pathname))) {while ( scanner.hasNextLine() ) {    String line = scanner.nextLine();   }}
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

每个字符至少使用 2 个字节,您还需要内存进行处理。我会给它更多的内存,比如 24 GB,看看它真正需要多少。

注意 Java 9+ 有压缩字符串,可以减少消耗。

更好的方法是在读取文件时使用 SAX 解析器来处理文件,这将使用一小部分内存。


查看完整回答
反对 回复 2021-10-06
  • 1 回答
  • 0 关注
  • 338 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信