Я новичок в Java, и мне интересно, как анализировать эту сессию профиля памяти в NetBeans и как следить за ней, чтобы получить помощь в поиске утечки памяти?
Что означает «Живые байты»? Я вижу, что при суммировании всех живых байтов я получу лишь небольшую часть используемой системной памяти Java-приложения.
Почему нет информации о выделенных байтах каждого типа объекта?
Является ли постоянно растущее значение «Выделенных объектов» признаком утечки памяти?
Это приложение с множеством параллельных потоков и http-соединений.
Я проверил темы, и они работают нормально - я имею в виду, что не более 20 потоков одновременно.
Я использовал JBOSS Netty для http-соединения и jSoup для парсинга HTML.
![netbeans profiler](https://i.stack.imgur.com/1fjep.png)
Эта утечка памяти вызвана слишком большим количеством выделенных объектов ParseError? или я должен искать по причине утечки памяти с трассировкой стека создания байтов?
Дополнительные ресурсы:
![netbeans profiler](https://i.stack.imgur.com/9Jre4.png)
![netbeans profiler](https://i.stack.imgur.com/xbx6O.png)
EDIT:
Я добавил в свой проект HTML Cleaner. Это потому, что я больше не вижу ошибок парсера. Рост утечки памяти сейчас примерно в 3-4 раза медленнее. После использования 800 МБ памяти приложение перестало работать, и я мог наблюдать за кучей в NetBeans. Результаты:
![heap](https://i.stack.imgur.com/jWIGW.png)
Примечание. Я не создал ни одного LinkedHashMap в своем приложении, поэтому он должен быть создан другой библиотекой. TagNode - это объект, который содержит очищенный HTML после очистки HTML Cleaner. В моем приложении только один объект TagNode, и это локальная переменная в обработчике ответов http netty (вызывается messageReceived).