Старое долго работающее приложение в prod исчерпало память.При анализе дампа потока я перемещаюсь с сохраненным размером и ищу объекты с большим сохраненным размером, чтобы понять, что вызывает проблемы с памятью (утечка или слишком много объектов из какого-либо процесса).
В этом случаеотчет об утечке памяти указывает на HashedSession с молнии.При просмотре сеансов я вижу, что в приложении сеанс содержит объекты в атрибутах, которые ссылаются на один и тот же сеанс в цикле.
Теперь проблема в том, что я не могу определить, какие компоненты имеют оставшийся размер (которые суммируются с общим оставшимся размером) и откуда они поступают.Самый большой размер в сеансе - это сам сеанс, и другие атрибуты почти ничего не имеют.
Class Name | Retained Heap
----------------------------------------------------------------------------------------------------
org.eclipse.jetty.server.session.HashedSession @ 0x77d47bf70 | 201 414 144
|- _attributes java.util.HashMap @ 0x782c20250 | 201 414 056
| |- table java.util.HashMap$Node[16] @ 0x78594db98 | 201 414 008
| | |- [10] java.util.HashMap$Node @ 0x787047090 | 201 411 880
| | | |- value com.vaadin.terminal.gwt.server.WebApplicationContext @ 0x784244740| 201 411 848
| | | | |- session org.eclipse.jetty.server.session.HashedSession @ 0x77d47bf70 | 201 414 144
| | | | |- browser com.vaadin.terminal.gwt.server.WebBrowser @ 0x7832eeb68 | 400
| | | | |- applications java.util.HashSet @ 0x787a9e1a8 | 192
| | | | |- applicationToAjaxAppMgrMap java.util.HashMap @ 0x783280118 | 160
| | | | |- listeners java.util.Collections$SynchronizedList @ 0x787a9e190 | 104
----------------------------------------------------------------------------------------------------
Я знаю, что, возможно, я делаю здесь что-то глупое, но я подумал, что следуя самым большим оставшимся размерам(или второй по величине, чтобы пропустить цикл) Я бы пришел к настоящим злодеям этого вопроса.Но я не могу найти какой-либо другой сохраненный набор объектов с таким же сохраненным размером, чтобы указать мне на следующий подозрительный объект (кроме исходного сохраненного размера сеанса).
Работает на Java 8, HotSpot JVM