Прямая память управляется отдельно в Java и может рассматриваться как «неуправляемая».В JVM Sun / Oracle она имеет свой собственный предел использования памяти, и вы можете одновременно достичь предела размера кучи и прямого объема памяти.
В JVM Sun / Oracle вы можете явно освободить прямую памятьзаблокировать с помощью внутреннего API.В редких случаях вам даже нужно это делать, но вот как
ByteBuffer bb = ByteBuffer.allocateDirect(1024*1024);
((DirectBuffer) bb).cleaner().clean();
Вы можете сделать это десять тысяч раз, не вызывая GC.количество кучи и не считается до прямого предела памяти.Сумма, которую вы можете отобразить, практически не ограничена.(Хотя ограничено 2 ГБ в одном MappedByteBuffer)