Не хватает места в куче

У меня проблема с пространством в куче. Моя программа проста. Есть два участника (отправка и получение). «Отправляющий» субъект передает 10000 объектов в секунду для «приема», а получение публикует эти объекты. полученный объект получателя сохраняется в контейнере, но контейнер опорожняется каждую секунду. Так что нет никаких шансов, что в контейнере закончится место. Теперь после 420000 объектов мое затмение выдает ошибку: «Программа обновления ioconsole обнаружила проблему». И когда я перехожу к деталям, я вижу ошибку Внутренняя ошибка :: пространство кучи Java

Я пробовал увеличить размер кучи. Размер моей кучи составляет 8096 м, а максимальный размер - 4096

Я слежу за своим кодом с помощью visualVm и замечаю, что он не превышает размер кучи atall. Совершенно пусто, как решить проблему.

Может ли кто-нибудь сообщить мне, какие еще возможные сценарии могут привести к таким ошибкам.


person Rags    schedule 12.06.2012    source источник


Ответы (4)


IOConsole - это класс eclipse, а не ваша программа. Вы много печатаете на System.out? В разделе «Окно»> «Настройки» найдите «консоль». Установите какое-то ограничение для всех консольных буферов. Попробуйте распечатать меньший объем вывода из программы. Возможно, вместо этого войдите в файл.

person John Watts    schedule 12.06.2012
comment
Да, я не смог найти строки printf, потому что это было сделано файлом lagback.xml. При изменении статуса в этом файле количество строк журнала сократилось, а количество ошибок уменьшилось. Большое спасибо.. - person Rags; 14.06.2012

Эта проблема возникла из-за размера буфера в консоли.

Решение :

Щелкните правой кнопкой мыши консоль -> Настройки

ограничить консоль.

person abinov    schedule 06.02.2015

Вы можете добавить следующие аргументы JVM, чтобы получить представление об использовании памяти и о том, что делает GC:

-Xloggc:/tmp/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
person kevin_c    schedule 12.06.2012

Я столкнулся с проблемой и попытался решить ее, изменив настройки кучи и буфера в eclipse. Однако я не мог ее решить. Затем я заметил, что в моей программе есть утечка памяти и со временем увеличивается количество потоков. Проблема была решена после того, как я исправил ошибку. Думаю, утечка памяти - не самая вероятная причина этого, но ее следует учитывать.

person Erkan Erol    schedule 07.09.2015