warum kann „Java-Version“ abstürzen?

warum kann „Java-Version“ abstürzen?

Unter Ubuntu Linux 10.10 (und ich hatte das gleiche Problem unter 10.04) stürzt Java (von openjdk-6-jre-headless) aus unbekanntem Grund ab:

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

Es ist viel Speicher frei, das ist also nicht die Ursache. Wenn ich mich als anderer Benutzer anmelde, funktioniert es:

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)

Der Absturz scheint also durch einige lokale Änderungen verursacht worden zu sein, die ich vorgenommen habe.

  • Beide Benutzer haben keine JAVA*-Umgebungsvariablen festgelegt.
  • Der Absturz ist nicht vom aktuellen Arbeitsverzeichnis abhängig.
  • Laut strace werden keine Dateien im Home-Verzeichnis geöffnet.

Ich habe keine Ahnung, was der Grund sein könnte. Für jede Hilfe bin ich dankbar.

Antwort1

Das Problem wurde durch meine Einstellungen in /etc/security/limits.conf verursacht, wo ich das „Adressraumlimit“ auf 1 GB gesetzt habe. Aus irgendeinem Grund benötigt Java mehr als 1 GB virtuellen Speicher zum Starten:

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

Ich verstehe nicht, warum so viel Speicher benötigt wird. Alle anderen Programme, die ich verwende, funktionieren mit dem 1-GB-Limit einwandfrei. Das Problem ist jedenfalls gelöst.

verwandte Informationen