Почему Финализатор занимает 63% кучи - PullRequest
0 голосов
/ 27 января 2020

Я отлаживаю OOM с помощью инструмента Eclipse MAT. В дереве подозрительных объектов и знаменателя утечки инструмента MAT я мог видеть один экземпляр Finalizer, занимающий кучу 63% -

Class Name                                                | Shallow Heap | Retained Heap | Percentage
------------------------------------------------------------------------------------------------------
class java.lang.ref.Finalizer @ 0x6d4efab48 System Class  |           16 |   729,335,536 |     63.07%
com.vfold.vdi.desktoptracker.DesktopTracker @ 0x6d7b157f8|          112 |    77,148,712 |      6.67%
org.apache.cxf.jaxws.JaxWsClientProxy @ 0x6c4af8830       |           32 |    34,559,544 |      2.99%
com.vfold.vdi.tracker.TrackerManager @ 0x6d7ab0938       |          144 |    30,941,920 |      2.68%
org.apache.cxf.jaxws.JaxWsClientProxy @ 0x6fe469c88       |           32 |    23,754,824 |      2.05%
org.apache.cxf.jaxws.JaxWsClientProxy @ 0x6ea58a038       |           32 |    23,754,088 |      2.05%
------------------------------------------------------------------------------------------------------

Я знаю, как работает финализация, но не в состоянии обнаружить, на каких объектах эти объекты финализаторы вызывают. Когда я нажимал на список объектов финализатора, я мог видеть шаблон как прикрепленный. Означает ли это, что финализаторы вызываются в классе com.sun.jndi.ldap.LdapSearchEnumeration? Или я не на том пути? Кроме того, заглянул в исходный код LdapSearchEnumeration и не смог найти какой-либо метод finalize. Любые советы о том, как определить, на какие объекты были вызваны эти финализаторы? снимок экрана с выводом Eclipse MAT

...