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

我一直在尝试读取一个 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();


   }


}


波斯汪
浏览 339回答 1
1回答

繁星coding

每个字符至少使用 2 个字节,您还需要内存进行处理。我会给它更多的内存,比如 24 GB,看看它真正需要多少。注意 Java 9+ 有压缩字符串,可以减少消耗。更好的方法是在读取文件时使用 SAX 解析器来处理文件,这将使用一小部分内存。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java