为什么 FileChannel.map 最多需要 Integer.MAX_VALUE 的数据?
我在使用 FileChannel.map 时遇到以下异常
Exception in thread "main" java.lang.IllegalArgumentException: Size exceeds Integer.MAX_VALUE
at sun.nio.ch.FileChannelImpl.map(Unknown Source)
at niotest.NioTest.readUsingNio(NioTest.java:38)
at niotest.NioTest.main(NioTest.java:64)
快速查看 OpenJdk 实现表明,中的方法 map(..) 采用类型作为输入。但是在身体内部,它会将其与之进行比较,如果它大于此,则会引发错误。为什么将大小作为输入,但将其限制为最大长度?FileChannelImpl
size
long
Integer.MAX_VALUE
long
integer
有谁知道这个实现背后的具体原因?还是某种错误?
我正在使用64位Windows-2k8上的64位JRE运行此程序