почему “Java - версия” может отказать?

На Ubuntu Linux 10.10 (и у меня была та же проблема на 10,04), Java (от openjdk-6-jre-headless) катастрофические отказы по неизвестной причине:

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

Существует много свободной памяти, таким образом, это не причина. Если я вхожу в систему как другой пользователь, это работает:

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)

Таким образом, катастрофический отказ, кажется, вызывается некоторыми локальными изменениями, которые я внес.

  • У обоих пользователей нет JAVA* огибающий набор Вара.
  • Катастрофический отказ не зависит от текущего рабочего каталога.
  • Согласно strace, не открыты никакие файлы в корневом каталоге.

Я понятия не имею, какова может быть причина. Любая справка будет цениться.

1
задан 29.10.2010, 17:44

1 ответ

Проблема была вызвана моими настройками в/etc/security/limits.conf, где я установил "предел адресного пространства" к 1 ГБ. По некоторым причинам Java нужен больше чем 1 ГБ виртуальной памяти для запуска:

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

Я не понимаю, почему такая память необходима. Все другие программы, которые я использую, хорошо работают с пределом на 1 ГБ. Так или иначе проблема решена.

1
ответ дан 17.12.2019, 00:31

Теги

Похожие вопросы