我在java应用程序中构建了一些文件排序功能,它的目的是对大于20GB的文件进行排序。一般方法是以块的形式读取文件,对内存中的每个块进行排序,然后将其写入自己的临时排序文件。在第二遍,我同时打开所有块文件,并将它们编织在一起,形成最终的排序文件。
我想知道在打开和同时阅读大量文件时是否有任何实际限制?
在我自己的机器(Mac OS X)上,我已经能够读取> 250个文件而没有问题。也许有人意识到可能适用于其他平台的限制?
感谢您的时间。
答案 0 :(得分:2)
即使Java中没有特定限制,操作系统也会对每个进程的打开文件数施加限制。
在Linux上,您可以通过设置
来更改此限制ulimit -n max_open_files
答案 1 :(得分:0)
至少在Linux上,您可以查看ulimit -n
答案 2 :(得分:0)
这取决于平台,jvm会愉快地在linux上打开文件,直到它达到打开文件描述符的最大数量(记住unix套接字也是文件描述符)。