JVM可以处理的最大文件大小是多少?

时间:2010-12-27 06:35:40

标签: java file-io

我想知道Java代码可以读取的最大文件大小吗?

我想处理 100mb 的文件大小。这有可能吗?

如果可能,我必须做什么 JVM初始设置

请推荐一些处理文件的最佳做法。 喜欢使用ObjectInputStream,FilterInputStream等。使用字节数组存储文件内容等

5 个答案:

答案 0 :(得分:4)

我知道的唯一最大值是长度()的报告最大值 - 这是一个长的。那个长度是2 ^ 62 - 1,或者非常大。

Java不会一次将整个文件保存在内存中。如果要将部分文件保存在内存中,则应使用“缓冲”类之一(类的名称以Buffered开头)。这些类根据您设置的缓冲区大小为您缓冲部分文件。

您应该使用的确切类取决于文件中的数据。如果您更具体,我们可能会帮助您确定要使用的类。

(一个简单的说明:说真的,100mb?这个很小。)

答案 1 :(得分:3)

您能写的最大数字是多少?这是最大尺寸。

如果以块的形式阅读,文件的总大小无关;世界上没有规则说你必须一次性读取你的100兆字节文件,你可以用10兆字节的块来读取它。真正重要的是如何使用传入的数据以及是否需要完全存储原始数据的产品(例如,如果数据是建筑物的3D模型,您在内部需要如何表示它? / em>)或仅相关部分(,例如从巨大的文本文件中找到前十个匹配某些子句)。

由于有很多可能的方法来处理数据,因此对您的问题没有全面覆盖的答案。

答案 2 :(得分:2)

理论上没有任何可以读取的最大文件大小,但我认为它是Integer.MAX_VALUE因为你不能初始化charBuffer的大小大于Integer.MAX_VALUE

char[] buffer = new char[/* int size */];
char[] buffer = new char[Integer.MAX_VALUE]; // maximum char buffer

BufferedReader b = new BufferedReader(new FileReader( new File("filename")));
b.read(buffer);

答案 3 :(得分:1)

Java不支持特定的最大文件大小,这完全取决于您运行的操作系统。即使在32位操作系统上,100兆字节也不会太大问题。

您没有说是否要立即将整个文件读入内存。您可能会发现您只需要一次处理文件。例如,文本文件可能一次处理一行,因此不需要加载整个文件。只需一次读一行并处理每一行。

如果要将整个文件读入一个内存块,则可能需要更改为JVM分配的默认堆大小。许多JVM的默认值为128 MB,这可能不足以加载整个文件,并且仍有足够的空间来执行其他有用的操作。查看JVM的文档,了解如何增加堆大小分配。

答案 4 :(得分:1)

只要你有超过100 MB的空闲时间,你就应该能够将整个文件一次加载到内存中,尽管你可能不需要。

BTW:用字母表示的意思

M = Mega or 1 million for disk or 1024^2 for memory.
B = Bytes (8-bits)
b = bit e.g. 100 Mb/s
m = milli e.g. mS - milli-seconds.

100毫比特只对压缩数据有意义,但我认为这不是你所说的。

相关问题