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

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

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 19 июля 2011

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

0 голосов
/ 15 июня 2011

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

Запустите System.gc () перед ByteBuffer.allocateDirect () ...

...