【发布时间】:2012-03-24 17:28:08
【问题描述】:
Java 中是否有任何机制可以减少读取大型文本文件时的内存使用量?
我遇到的几乎每个程序都使用 String 来读取文本文件。但是 Java 为每个 String 文字保留空间。这就是为什么我认为内存使用量会增加,因为所有 String 对象都被存储了。 java.io 的所有类都处理字符串。但是如果我们不使用 StringBuilder 那么我们如何减少内存使用呢?
毕竟减少内存使用是 StringBuilder 的主要关注点[因为它不像 String 那样不可变]。那么我们如何在不使用 String 的情况下在 Java I/O 操作中利用它的特性,即不使用类似这样的东西:sb.append([String object]);
【问题讨论】:
-
通常处理大文件背后的秘密不是试图将它们完全读入内存,而且你不需要 StringBuilder。
-
有什么顾虑。您是否尝试将整个文件读入字符串?
-
字符串字面量与文件 i/o 没有任何关系
-
这与使用字符串常量池不同。如果您不想使用字符串,请使用字节缓冲区。你是否真的对任何东西进行了分析,甚至看看你是否关心你将做出的相对较小的性能/内存改进?
-
当您从文件中读取时,您并没有创建字符串文字,因为没有文字——我不确定您为什么看不到它。为了有一个字符串文字,必须有一个文字 - 在你的例子中,有 - 它是
"abc"。当您从文件中读取时,您并没有这样做。
标签: java string io stringbuilder stringbuffer