¿Por qué "java -version" puede fallar?

¿Por qué "java -version" puede fallar?

En Ubuntu Linux 10.10 (y tuve el mismo problema en 10.04), Java (de openjdk-6-jre-headless) falla por motivo desconocido:

me@ub:~$ java -version 
#
# A fatal error has been detected by the Java Runtime Environment:
#
# java.lang.OutOfMemoryError: requested 304 bytes for CHeapObj-new. Out of swap space?
#
#  Internal Error (allocation.inline.hpp:39), pid=14459, tid=140557172041488
#  Error: CHeapObj-new
#
# JRE version: 6.0_20-b20
# Java VM: OpenJDK 64-Bit Server VM (17.0-b16 mixed mode linux-amd64 )
# Derivative: IcedTea6 1.9.1
# Distribution: Ubuntu 10.10, package 6b20-1.9.1-1ubuntu3
# An error report file with more information is saved as:
# /home/me/hs_err_pid14459.log

Hay mucha memoria libre, así que esa no es la causa. Si inicio sesión como otro usuario, funciona:

guests@ub:~$ java -version 
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.1) (6b20-1.9.1-1ubuntu3)
OpenJDK 64-Bit Server VM (build 17.0-b16, mixed mode)

Entonces, el bloqueo parece deberse a algunos cambios locales que hice.

  • Ambos usuarios no tienen configuradas las variables de entorno JAVA*.
  • El fallo no depende del directorio de trabajo actual.
  • Según strace, no se abre ningún archivo en el directorio de inicio.

No tengo idea de cuál puede ser el motivo. Cualquier ayuda será apreciada.

Respuesta1

El problema fue causado por mi configuración en /etc/security/limits.conf donde configuré el "límite de espacio de direcciones" en 1 GB. Por alguna razón, Java necesita más de 1 GB de memoria virtual para iniciarse:

wojdyr@ub:~$ java -version 
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.1) (6b20-1.9.1-1ubuntu3)
OpenJDK 64-Bit Server VM (build 17.0-b16, mixed mode)
wojdyr@ub:~$ ulimit -Sv 1048576
wojdyr@ub:~$ java -version 
#
# A fatal error has been detected by the Java Runtime Environment:
#
# java.lang.OutOfMemoryError: requested 304 bytes for CHeapObj-new. Out of swap space?
#
#  Internal Error (allocation.inline.hpp:39), pid=3319, tid=140563844388624
#  Error: CHeapObj-new

No entiendo por qué se necesita tanta memoria. Todos los demás programas que uso funcionan bien con un límite de 1 GB. De todos modos, el problema está solucionado.

información relacionada