我真的很麻烦:我想使用FileChannelMappedByteBuffer读取超过几个GB的巨大文件-我发现的所有文档都暗示使用FileChannel.map()方法映射文件相当简单。
当然,由于所有Buffer方法都将int用于位置,限制和容量,因此限制为2GB,但是系统隐含的限制在那之下呢?

实际上,我遇到许多有关OutOfMemoryException的问题!根本没有任何文件可以真正定义限制!
因此-如何在不获取异常的情况下将适合int-limit的文件安全地映射到一个或几个MappedByteBuffer中?

我可以问系统在尝试FileChannel.map()之前可以安全地映射文件的哪一部分吗?怎么样?
为什么很少有关于此功能的文档?

最佳答案

文件越大,一次存储在内存中的需求就越少。设计一种处理文件的方法,一次处理一个缓冲区,一次处理一行,等等。

MappedByteBuffer尤其成问题,因为没有定义的映射内存释放,因此一次使用多个内存本质上注定会失败。

10-05 19:50