У меня есть Java-процесс, работающий как служба в Windows 7 [8 ГБ ОЗУ] в течение 4-5 дней без большой активности в JVM. Я замечаю, что память (частный рабочий набор) [Менеджер задач] растет с каждым днем. Он начался с 45000K, и теперь он достиг 115000K.
Если я захвачу кучу кучи Java-процесса, размер дампа кучи составляет всего 950 КБ. Чем больше потребление памяти? или Как мне найти основную причину?
Максимальный размер кучи по умолчанию для 8-гигабайтного (8 000 000 К) компьютеров составляет 2 ГБ. Процесс Java будет использовать больше памяти, если он решит, что это увеличит пропускную способность до этого предела.
Примечание: размер процесса включает ~ 150 МБ разделяемых библиотек, поэтому, если вы считаете, что неудивительно, что он использует 115 МБ.
Реальный вопрос: вы действительно знаете, что это проблема, это не похоже на большую память.
Есть очень большая вероятность, что это утечка памяти. В основном некоторые объекты, которые должны быть удалены GC, по-прежнему имеют ссылки на них.
Вы должны использовать инструмент visualvm java, чтобы исследовать это. http://rejeev.blogspot.com/2009/04/analyzing-memory-leak-in-java.html