porque “java -version” pode falhar?

1

No Ubuntu Linux 10.10 (e eu tive o mesmo problema em 10.04) o java (do openjdk-6-jre-headless) falha por razões desconhecidas:

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

Há muita memória livre, então essa não é a causa. Se eu fizer login como outro usuário, funcionará:

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)

O acidente parece ser causado por algumas alterações locais que eu fiz.

  • Ambos os usuários não possuem um conjunto de variáveis JAVA * env.
  • O travamento não depende do diretório de trabalho atual.
  • De acordo com strace, nenhum arquivo no diretório inicial é aberto.

Eu não tenho idéia do que pode ser o motivo. Qualquer ajuda será apreciada.

    
por marcin 29.10.2010 / 16:44

1 resposta

1

O problema foi causado por minhas configurações em /etc/security/limits.conf onde defini "limite de espaço de endereço" para 1GB. Por algum motivo, o java precisa de mais de 1GB de memória virtual para iniciar:

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

Eu não entendo porque muita memória é necessária. Todos os outros programas que eu uso funcionam bem com limite de 1GB. Enfim, o problema está resolvido.

    
por 05.11.2010 / 14:12