我有一个大文件(50-60GB)
。
我也有非常好的机器(128GB RAM and 16 core)
。
现在,我想阅读整个文件并进行一些操作。另请注意,该文件是二进制文件,因此我reading as string or as bytes doesn't matter
。我的IO非常慢,所以我想在BufferedReader的缓冲区中读取整个文件。
但我被buffered reader's constructor轻击。
现在,我最多可以有2G buffer
个尺寸。这对我来说非常痛苦,因为我必须从IO读取30次。
看到BufferedReader的方法,似乎没有超过2G标记(甚至this read函数)
我看错了班吗?
java中是否还有其他适合我要求的课程?
我的主要要求是我可以忍受初始加载时间,我想利用128G内存。
由于
答案 0 :(得分:1)
下载IO阶梯30次不会影响程序的性能。将2G从磁盘读入RAM(即使在一台强大的机器上读取数秒)所需的时间完全使进出本机代码的成本相形见绌,本机代码大约为几毫秒。
你在做什么需要你把整个文件留在内存中?你能不能简单地进行串行处理?