Рассмотрим приложение, которое создает 5-6 потоков, каждый поток в цикле выделяет MappedByteBuffer для размера страницы 5 Мб.
java.io.IOException: Map failed at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:758)
Caused by: java.lang.OutOfMemoryError: Map failed
at sun.nio.ch.FileChannelImpl.map0(Native Method)
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:755)
Согласно спецификации, MappedBuffer должен распоряжаться прямой памятью, как только это сам GC.Похоже, проблема в том, что MappedBuffer-ы запаздывают в GC, позже, чем закончится прямая память.
Как избежать этой ситуации?Вероятно, скажите, что MappedBuffer неявно расположен, или используйте какой-то пул MappedBuffer
.