JAMON Утечка памяти
Я использую JAMON для анализа приложений.
Мой администратор websphere сообщил об утечке памяти в приложении. И, к моему удивлению, большая часть утечек памяти сообщается в JAMON API.
Сценарий таков: использование нашей производственной памяти со временем увеличивается. Через месяц он достиг 80%. И не уменьшается со временем. Я использую анализатор кучи Alphawork для анализа дампа кучи.
Как я могу быть уверен, что утечка памяти на самом деле является утечкой памяти.
1 ответ
JAMon поддерживается Java-картой, поэтому все, что приводит к неограниченному количеству или размеру его ключей, может вызвать проблемы с памятью. Итак, вот несколько вещей, на которые стоит посмотреть.
- Сколько у вас мониторов? Использование ключей, которые содержат постоянно меняющуюся информацию, такую как метка времени или аргументы функции, увеличит количество мониторов хамона. (MonitorFactory.getNumRows())
- Насколько велики ваши ключи (т.е. метки, которые вы отслеживаете)? Однажды я увидел несколько очень больших строк, используемых в качестве ключей (операторы select с большим предложением "in", которые занимали много памяти.
Если вышеупомянутые проблемы, вот некоторые методы, которые могут вам помочь.
- Ограничить количество мониторов с помощью - MonitorFactory.setMaxNumMonitors(int)
- Ограничить размер самого большого оператора SQL - MonitorFactory.setMaxSqlSize(int)
- Отслеживать общий размер ключа в jamon - MonitorFactory.enableTotalKeySizeTracking()
- Получить полный размер ключа в jamon (обратите внимание, что это также будет видно в веб-приложении jamon) - MonitorFactory.getTotalKeySize()
- В веб-приложении jamon вы можете выбрать "Сброс" статистики jamon из jamonadmins.jsp, чтобы стереть данные jamon и освободить всю память в качестве быстрого решения. Вы также можете сделать это программно, вызвав MonitorFactory.reset()