gpt4 book ai didi

java - 将文本文件读取为字符串而不消耗大量内存

转载 作者:太空宇宙 更新时间:2023-11-04 07:26:45 24 4
gpt4 key购买 nike

我尝试过使用 NIO(读取单个文件最慢)、BufferedInputStream 并逐行读取文件(平均每次传递 600 毫秒)来测量将文件读入字符串的几种方法的性能,然后使用 Filereader 和固定大小的数组作为缓冲区(最快)来读取该流(最快)

文件为 Windows .txt 文件格式的 95 MB 纯文本。将字符转换为字符串确实是瓶颈,但我注意到这种方法的内存消耗巨大。对于 95 MB 的 lorem ipsum,这会消耗最多 1 GB 的 RAM。我还没找到原因。

我尝试过但没有效果:

通过调用 System.gc() 发出垃圾收集器在方法结束之前将所有指针变量设置为 null(但无论如何都应该如此,它们仅在方法内定义)。

private void testCharStream() {
File f = f = new File("c:/Downloads/test.txt");
long oldTime = System.currentTimeMillis();
char[] cbuf = new char[8192];
StringBuilder builder = new StringBuilder();
try {

FileReader reader = new FileReader(f);

while (reader.read(cbuf) != -1) {
builder.append(cbuf);
}

reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long currentTime = System.currentTimeMillis();

System.out.println(currentTime - oldTime);
}

最佳答案

尝试 Apache Commons IO:http://commons.apache.org/proper/commons-io/我没有对其进行基准测试,但我认为代码已经过优化。

关于java - 将文本文件读取为字符串而不消耗大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18428657/

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