Как проверить, какая строка кода содержит большой объем памяти из файла HeadDump - PullRequest
0 голосов
/ 06 марта 2019

Добрый день,

У меня есть веб-приложение, и ошибка его выхода из памяти. Я анализирую файл Heapdump, используя инструменты IBM HeapAnalyser.

На вкладке Leak Suspect я увидел, что она сообщает 1 из моего java-файла, но это просто то, как java-файл не указал, в какой строке. Таким образом, я понятия не имею, как узнать, какая строка моего Java-файла на самом деле потребляет большую память. Данные «Анализ» выглядят следующим образом:

Responsible for 338,658,936 bytes (5.5 %) of Java heap
Contains 6 instances of the following leak suspects:
- com/support/service/impl/PaymentManagerImpl holding 67,950,432 bytes at 0x68798d640
- array of java/util/concurrent/ConcurrentHashMap$Segment holding 12,663,208 bytes at 0x695b44800
- array of java/util/WeakHashMap$Entry holding 96,583,432 bytes at 0x6930c8da0
- org/springframework/beans/factory/support/DefaultListableBeanFactory holding 37,203,480 bytes at 0x69a08ac88
- com/ibm/etools/commonarchive/impl/WARFileImpl holding 51,712,720 bytes at 0x683039f88
- com/ibm/ws/websvcs/transport/http/WASAxis2Servlet holding 22,099,944 bytes at 0x68b02d0c8

и его «Имя» com/ibm/ws/webcontainer/annotation/WASAnnotationHelper.

PaymentManagerImpl - это java-файл, о котором я упоминал только что. Данные Analysis только показывают мне этот файл Java, но не говорят мне, какая строка или какой метод. Но я видел это написано at 0x68798d640.

Могу ли я узнать, есть ли способ проверить, какая строка из моего PaymentManagerImpl потребляет большую базу памяти на at 0x68798d640?

Если нет, есть ли способы получить подсказку для продолжения, проверьте приложение, почему вылетает ошибка памяти?

...