gpt4 book ai didi

java - 循环大文件时内存不足处理 - Java

转载 作者:行者123 更新时间:2023-11-30 03:14:33 25 4
gpt4 key购买 nike

我遇到了一个问题,我正在循环遍历一个过大的文件(大约 2GB)。运行大约 5 分钟后,我遇到以下问题:OutOfMemoryError:GC 开销限制超出。

我的代码如下,比较干净:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Organiser {
public static void main(String[] args) throws FileNotFoundException {
ArrayList<String> lines = new ArrayList<>();
String directory = "C:\\Users\\xxx\\Desktop\\Files\\combined";
Scanner fileIn = new Scanner(new File(directory + ".txt"));
while (fileIn.hasNextLine() == true) {
lines.add(fileIn.nextLine());
System.out.println("Reading.");
System.out.println("Reading..");
System.out.println("Reading...");
}

PrintWriter out = new PrintWriter(directory + "_ordered.txt");
Collections.sort(lines);
System.out.println("Ordering...");
for (String output : lines) {
out.println(output + "\n");
}
out.close();
System.out.println("Complete - See " + directory + "_ordered.txt");
}
}

想知道如何解决这个问题?

最佳答案

要对非常大的文件进行排序,您可能需要对内存中可以容纳的最大数量执行合并排序。这就是 sort unix 实用程序的工作原理。注意:您可以只从 Java 运行 sort,而不是自己实现它。

一个更简单的选择是为进程提供更多内存。您将需要大约 5 GB 或更多的堆。当像 Java 那样进行 UTF-16 编码时,2 GB 的编码文本会变成 4 GB,再加上用于数据结构其余部分的空间。

关于java - 循环大文件时内存不足处理 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32946508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com