有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

OutOfMemoryException:使用简单groovy读取11GB XML时出现内存错误,但使用普通JAVA读取时没有错误

我正在使用下面的简单groovy脚本重新定义一个11GB大小的大型XML。 1.Groovy-它给出了memmory错误。 2.Java-无内存不足错误

这两个代码都在InteliJ Idea社区版上使用默认VM内存执行

Groovy代码

def is = new File("TOPOLOGY.xml").newInputStream()
is.eachLine { line ->
   println(line.size())
}

JAVA代码

public class ReadXMLJavaLocal {
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(new File("TOPOLOGY.xml"))) {
            while (scanner.hasNext()) {
                System.out.println(scanner.nextLine().length());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

期望用户能够理解导致内存异常的groovy代码的错误


共 (1) 个答案

  1. # 1 楼答案

    看起来Groovy代码为文件和输入流定义了一个变量,而Java只为scanner对象定义了一个变量

    Groovy代码中的is变量必须存储11GB文件的所有数据。Java只是在扫描文件时一次打印一行