2011-05-27 18 views
13

Estoy utilizando una JVM de 64 bits (Oracle), cuando intento asignar tamaños de búfer mayores a 256 MB, se queja y arroja un error de "falla de segmentación". I y asignar memorias intermedias de memoria directa usando java NIO, y transferir y recibir estos objetos hacia y desde un programa de cliente RMI en la misma máquina (Linux de 64 bits).Error de segmentación de Java

¿Alguna idea?

+9

¿Se puede publicar un poco de código? –

+1

¿Cuál es la configuración de montón máxima? – jtahlborn

+5

Un error de segmentación solo puede ocurrir si tiene un error en una biblioteca JNI o ​​en la JVM. Lo primero que intentaré es asegurarme de que tienes Java 6 update 25 o la última versión. –

Respuesta

0

¿Ha probado la siguiente solución del informe de errores?

Run System.gc() antes de ByteBuffer.allocateDirect() ...

+0

Completamente irrelevante. Los buffers directos no salen del espacio de recolección de basura. – EJP

+0

@EJP: si lees el informe de error, ofrece una justificación plausible de por qué eso podría ayudar al asunto. –

+0

Nunca puede estar seguro de que System.gc() hace cualquier cosa ... así que esa no es una buena manera de resolver ningún problema ... acepto a EJP y le extendería su declaración de que esta llamada es en la mayoría de casos completamente irrelevantes. Es solo un AVISO a la JVM que al programa le gustaría hacer un GC, pero nunca se puede decir si lo hará la JVM. – Chris

2

fallos de segmentación ocurre en programas (como la JVM) debido a errores de memoria. O bien la JVM tiene un error que hace que trate de usar la sección incorrecta de la memoria en la computadora cuando está arrancada para usar tanto espacio en el búfer, o intenta asignar 256M de memoria y en el proceso usa más espacio que la computadora lo dio. En resumen, me parece que la JVM de 64 bits no fue construida para asignar tanto espacio con su configuración actual. Quizás podría intentar configurar la JVM para que solicite más memoria de la computadora antes de que se inicie. El comentario de jtahlborn al preguntarle cuál es la configuración del montón máximo en la JVM también es una pregunta que debe hacerse antes de ejecutar nuevamente el programa.

Cuestiones relacionadas