我一直在尝试读取一个 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 解析器来处理文件,这将使用一小部分内存。
添加回答
举报
0/150
提交
取消