java.lang.OutOfMemoryError: запрошено 16 байт для CHeapObj-new. Недостаточно места подкачки?

Я получил эту ошибку при попытке запустить процесс поиска Java (запустить процесс Java). Я устанавливаю адресное пространство, используя RLIMIT_AS.

Пожалуйста, помогите мне обойти эту ошибку.

У меня есть сомнения по поводу аргументов VM. (Увидеть ниже). Есть ли способ обойти эту проблему, не меняя конфигурации. (Аргументы ВМ)

Среда выполнения Java обнаружила фатальную ошибку:

java.lang.OutOfMemoryError: запрошено 16 байт для CHeapObj-new. Недостаточно места подкачки?

Внутренняя ошибка (allocation.inline.hpp:39), pid=16994, tid=1097390400 Ошибка: CHeapObj-new

Версия JRE: 6.0_21-b06 Виртуальная машина Java: Java HotSpot(TM) 64-разрядная виртуальная машина сервера (17.0-b16 смешанный режим linux-amd64 ) Если вы хотите отправить отчет об ошибке, посетите: http://java.sun.com/webapps/bugreport/crash.jsp


--------------- T H R E A D ---------------

Текущий поток (0x00000000489a7800): JavaThread "main" [_thread_in_vm, id=17043, stack(0x000000004158d000,0x000000004168e000)]

Стек: [0x000000004158d000,0x000000004168e000], sp=0x00000000416897f0, свободное пространство=3f100000000000000018k

Состояние ВМ: не в безопасной точке (нормальное выполнение)

VM Mutex/Monitor в настоящее время принадлежит потоку: нет

Куча PSYoungGen общая 38208K, 24989K использовали [0x00002aaae8f80000, 0x00002aaaeba20000, 0x00002aab03a20000) Иден пространство 32768K, 76% использовали [0x00002aaae8f80000,0x00002aaaea7e7518,0x00002aaaeaf80000) из пространства 5440K, 0% использовали [0x00002aaaeb4d0000,0x00002aaaeb4d0000,0x00002aaaeba20000) в пространстве 5440K, 0% использовали [ 0x00002aaaeaf80000,0x00002aaaeaf80000,0x00002aaaeb4d0000) PSOldGen всего 87424K, используется 0k [0x00002aaab3a20000, 0x00002aaab8f80000, 0x00002aaae8f80000) пространства объектов 87424K, 0% использовали [0x00002aaab3a20000,0x00002aaab3a20000,0x00002aaab8f80000) PSPermGen общая 21248K, 10141K использовали [0x00002aaaae620000, 0x00002aaaafae0000, 0x00002aaab3a20000) пространство объектов 21248K, 47% используется [0x00002aaaae620000,0x00002aaaaf007410,0x00002aaaafae0000)

Аргументы виртуальной машины: jvm_args: -Xms128M -Xmx1280M -D.config=path -D.home=path1 -D .logfile=path2 java_command: com. .base.Server Тип средства запуска: SUN_STANDARD

ОС: выпуск CentOS 5.5 (финальный)

uname:Linux 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 libc:glibc 2.5 NPTL 2.5 rlimit: STACK 10240k, CORE 1000001k, NPROC 24576, NOFILE 4096, AS 1835008k средняя нагрузка 0,45 0,22

Процессор: всего 2 (1 ядро ​​на процессор, 1 поток на ядро) семейство 6 модель 46 степпинг 6, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt

Память: 4 КБ, физическая 2959608 КБ (2057540 КБ свободно), подкачка 4096532 КБ (4096532 КБ свободно)

vm_info: 64-разрядная виртуальная машина сервера Java HotSpot(TM) (17.0-b16) для linux-amd64 JRE (1.6.0_21-b06), созданная 22 июня 2010 г., 01:10:00, автором "java_re" с gcc 3.2.2 ( SuSE Linux)

время: вторник, 22 марта, 03:08:27 2011, прошедшее время: 5 секунд


person Rajath    schedule 22.03.2011    source источник
comment
Вы намеренно устанавливаете -Xmx на 1280 мегабайт? Есть ли у вашей машины такой объем ОЗУ? Если нет, то объем физической ОЗУ плюс пространство подкачки превышает 1280 МБ?   -  person DaveH    schedule 22.03.2011
comment
У меня больше нет машины с меньшим объемом оперативной памяти.   -  person Bombe    schedule 22.03.2011
comment
@Bombe - хорошая мысль ....   -  person DaveH    schedule 22.03.2011
comment
Детали памяти: Память: 4k страницы, физическая 2959608k (2057540k свободно), подкачка 4096532k (4096532k свободно)   -  person Rajath    schedule 22.03.2011
comment
На самом деле то, что я получаю, является прерывистой ошибкой. Иногда процесс Java запускается правильно, а иногда отображается указанная выше ошибка. Размер моей оперативной памяти составляет 3 ГБ, а размер подкачки - 4 ГБ. Я пытаюсь сделать rlimit_as с softlimit как 1,75 ГБ. Несмотря на это, процесс Java выдает указанную выше ошибку (прерывисто).   -  person Rajath    schedule 22.03.2011


Ответы (1)


Что я сделал, так это погуглил сообщение Internal Error (allocation.inline.hpp:39) и нашел эту страницу http://forums.oracle.com/forums/thread.jspa?messageID=5203404 предполагает, что ограничение пространства подкачки было причиной проблемы (даже если этого не должно быть), после снятия ограничения проблема исчезла.

person Peter Lawrey    schedule 22.03.2011
comment
На самом деле то, что я получаю, является прерывистой ошибкой. Иногда процесс Java запускается правильно, а иногда отображается указанная выше ошибка. Размер моей оперативной памяти составляет 3 ГБ, а размер подкачки - 4 ГБ. Я пытаюсь сделать rlimit_as с softlimit как 1,75 ГБ. Несмотря на это, процесс java выдает указанную выше ошибку (прерывисто). Я должен использовать ограничения только для того, чтобы указать границу процесса для процессов. - person Rajath; 22.03.2011
comment
Если ваше мягкое ограничение составляет 1,75 ГБ, вы можете ограничить размер кучи до 1 ГБ или меньше, поскольку для работы JVM требуется больше, чем просто память кучи. Кроме того, вы можете повысить эффективность использования памяти при использовании 32-разрядной JVM или -XX:+UseCompressedOops на 64-разрядной JVM. - person Peter Lawrey; 22.03.2011
comment
Другим вариантом может быть покупка большего объема памяти, поскольку 8 ГБ уже не стоят так дорого, как раньше. ;) - person Peter Lawrey; 22.03.2011