Ошибка сегментации Java при попытке выделить размеры буфера больше 256 МБ

Я использую 64-разрядную JVM (Oracle), когда я пытаюсь выделить размер буфера, превышающий 256 МБ, он жалуется и выдает ошибку "ошибка сегментации". я и распределение прямых буферов памяти с использованием java NIO, а также передачу и прием этих объектов в клиентскую программу RMI и из нее на одном компьютере (64-разрядная версия Linux).

Любая идея?

Ответы

Ответ 1

Сегментация Неисправности происходят в программах (например, JVM) из-за ошибок памяти. У JVM есть ошибка, из-за которой он пытается использовать неправильный раздел памяти на компьютере, когда он работает, чтобы использовать это много буферного пространства, или пытается выделить 256 МБ памяти, и в процессе он использует больше места, чем компьютер дал это. Короче говоря, это звучит для меня, как 64-разрядная JVM не была создана, чтобы выделить столько места с его текущими настройками. Возможно, вы можете попробовать настроить JVM так, чтобы он запрашивал больше памяти с компьютера до его запуска. jtahlborn комментирует, что вы задаете вопрос о том, какой параметр максимальной кучи находится в JVM, также возникает вопрос, который вы должны задать перед повторным запуском программы.

Ответ 2

Вы пробовали следующее обходное решение из отчета об ошибке?

Запустить System.gc() до ByteBuffer.allocateDirect()...