долго работающий windows, потребляющий память

1

У меня есть Java-процесс, работающий как служба в Windows 7 [8 ГБ ОЗУ] в течение 4-5 дней без большой активности в JVM. Я замечаю, что память (частный рабочий набор) [Менеджер задач] растет с каждым днем. Он начался с 45000K, и теперь он достиг 115000K.

Если я захвачу кучу кучи Java-процесса, размер дампа кучи составляет всего 950 КБ. Чем больше потребление памяти? или Как мне найти основную причину?

Теги:
memory
heap

2 ответа

0
Лучший ответ

Максимальный размер кучи по умолчанию для 8-гигабайтного (8 000 000 К) компьютеров составляет 2 ГБ. Процесс Java будет использовать больше памяти, если он решит, что это увеличит пропускную способность до этого предела.

Примечание: размер процесса включает ~ 150 МБ разделяемых библиотек, поэтому, если вы считаете, что неудивительно, что он использует 115 МБ.

Реальный вопрос: вы действительно знаете, что это проблема, это не похоже на большую память.

  • 0
    У меня процесс запущен в течение 1 месяца без использования какой-либо функциональности, а личный рабочий набор вырос до 300 МБ. У меня есть некоторый унаследованный нативный код, написанный на языке C / C ++, который заключает в себе Java-приложение. Когда память достигла 300 МБ, я снова захватил дамп кучи Java и обнаружил, что общий размер кучи составляет всего 15 МБ. Я подозреваю, что утечка присутствует в родном коде.
  • 0
    @Vishik Вам нужно смотреть на живые объекты (после полного GC), но, как вы говорите, их нет в куче. Это может быть проблема с взаимодействием между Java и C. C / C ++ может ожидать, что вы вызываете close / clear / free для ресурса, который вы не делаете. т.е. это не является строго ошибкой в C / C ++, но потребляются нативные ресурсы.
Показать ещё 1 комментарий
0

Есть очень большая вероятность, что это утечка памяти. В основном некоторые объекты, которые должны быть удалены GC, по-прежнему имеют ссылки на них.

Вы должны использовать инструмент visualvm java, чтобы исследовать это. http://rejeev.blogspot.com/2009/04/analyzing-memory-leak-in-java.html

  • 0
    Да, это была утечка, однако утечка присутствовала в коде CPP, а не в Java.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню