Я новичок в Java и мне интересно, как анализировать этот сеанс профиля памяти в NetBeans и как следить за ним, чтобы получить помощь в поиске утечки памяти?
Что значит "Живые байты"? Я вижу, что когда я суммирую все живые байты, я получаю только небольшую часть используемой системной памяти java-приложения. Почему нет информации о выделенных байтах каждого типа объекта? Является ли постоянно растущее значение «Распределенных объектов» признаком утечки памяти?
Это приложение с большим количеством одновременных потоков и http-соединений. Я проверил потоки, и они работают нормально - я имею в виду, что одновременно не более 20 потоков. Я использовал JBOSS Netty для http-соединения и jSoup для разбора HTML.
Эта утечка памяти вызвана слишком большим количеством выделенных объектов ParseError? или я должен искать причину утечки памяти с трассировкой стека создания байтов?
Дополнительные ресурсы:
ИЗМЕНИТЬ:
Я добавил в свой проект HTML Cleaner. Это причина того, что я больше не вижу ошибок парсера. Рост утечек памяти теперь примерно в 3-4 раза медленнее. После достижения 800 МБ использования памяти приложение вышло из строя, и я мог наблюдать за кучей в NetBeans. Полученные результаты:
Примечание. Я не создавал LinkedHashMap в своем приложении, поэтому он должен быть создан другой библиотекой. TagNode — это объект, который содержит очищенный html после очистки «HTML Cleaner». У меня есть только один объект TagNode в моем приложении, и это локальная переменная в обработчике ответа netty http (вызываемом messageReceived).