簡體   English   中英

OutOfMemoryException:使用簡單的常規讀取11GB XML時出現內存錯誤,但使用普通JAVA讀取時不出錯

[英]OutOfMemoryException: When reading 11GB XML using simple groovy getting memory error but when reading using plain JAVA not error

我正在使用下面的簡單groovy腳本重做一個11GB的大型XML。 1. Groovy-產生內存錯誤。 2. Java-沒有內存不足錯誤

這兩個代碼均在InteliJ Idea社區版上使用默認VM內存執行。

常規代碼

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代碼正在為文件和輸入流定義一個變量,而您的Java僅為掃描程序對象定義了一個變量。

然后,Groovy代碼中的is變量必須存儲11GB文件的所有數據。 Java遍歷文件時僅一次打印一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM