Почему 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?

Кто-нибудь знает конкретную причину такой реализации? или это какая-то ошибка?

Source URL - http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/nio/ch/FileChannelImpl.java

Я запускаю эту программу, используя 64bit JRE на 64bit Windows-2k8

13
задан Jacek Laskowski 26 September 2015 в 13:24
поделиться