Добрый день,
У меня есть веб-приложение, и ошибка его выхода из памяти. Я анализирую файл 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
?
Если нет, есть ли способы получить подсказку для продолжения, проверьте приложение, почему вылетает ошибка памяти?