我使用MappedByteBuffer时
代码片段如下long blockNum = getBlockNum(blockSize,fileLength);//分块
in = new FileInputStream(file).getChannel();
for(long n = 0; n < blockNum;n++){
MappedByteBuffer inputBuffer = null;
long eachSize = 0;
if(n < blockNum -1){
eachSize = blockSize;


}else{
eachSize = fileLength - n*blockSize;
}
inputBuffer =
     in.map(FileChannel.MapMode.READ_ONLY, n*blockSize, eachSize);//读取大文件
但eachSize过大时会报错:存储空间不足,无法处理此命令。
这个存储空间跟Java虚拟机的内存是否有关,我加大Java虚拟机的内存是不能解决这个问题,反而使得可运行的eachSize变得更小了。那这个存储空间到底是指的什么呢?
我的电脑内存是2G的,eachSize的最大值为800M,Java使用默认虚拟内存。