Распределяет ли FileChannel#map
всю память, необходимую для результирующего ByteBuffer
немедленно, или она выделяется только по требованию во время чтения из буфера?
Я только что попытался отобразить все файлы размером более 500 МБ в тривиальной тестовой программе и посмотрел на использование памяти процессом. (Используя как Runtime#totalMemory
, так и следя за ним в OS X Activity Monitor для процесса groovysh.) Использование памяти никогда не превышало 30-ти МБ.
Итак, может ли реализация Java "спрятать" часть своего использования памяти в нативных вызовах? И если так, есть ли способ узнать, сколько это на OS X?