У меня есть отдельная программа, которую я запускаю локально, она предназначена для того, чтобы быть программой типа сервера, работающей круглосуточно и без выходных. Недавно я обнаружил, что у него есть утечка памяти, прямо сейчас единственным нашим решением является перезапуск его каждые 4 часа. Каков наилучший способ найти утечку памяти? Какой инструмент и метод мы должны использовать?Общая стратегия для устранения утечки памяти Java?
ответ
Если вы используете Java от Sun и используете хотя бы обновление по Java 6 (то есть самое новое), попробуйте запустить jvisualvm из JDK на том же компьютере, что и ваша программа, и присоедините к нему и включите профилирование ,
Это, скорее всего, самый простой способ начать работу.
Один из подходов заключается в том, чтобы регулярно получать кучи кучи, а затем направлять количество экземпляров ваших классов, чтобы попытаться определить, какие объекты последовательно создаются, но не собираются.
Еще один вариант - отключить части приложения, чтобы попытаться сузить область проблемы.
Посмотрите на инструменты, такие как jmap и jhat.
Вам необходимо memory profiler. Я рекомендую попробовать Netbeans profiler.
Возможно, вы найдете JMX и приложение jconsole, которое поставляется с Java. Вы можете получить некоторые интересные статистические данные из коробки, и добавление некоторых простых инструментов в ваши классы может обеспечить намного больше.
Когда речь заходит о проблемах с памятью охоты, я использую инструмент анализа кучи дампы
SAP Memory Analyzer
Eclipse Memory Analyser (MAT).
Анализатор памяти представляет собой инструментарий общего назначения для анализа дампов кучи Java. Помимо кучного хождения и быстрого вычисления сохраненных размеров, инструмент Eclipse сообщает о подозрениях на утечку и потреблении памяти. Основной областью применения являются ошибки из памяти и высокое потребление памяти.
Инициировано SAP, проект с тех пор был открыт и теперь известен как Eclipse Memory Analyser. Проверьте Getting Started страницу и особенно раздел Finding Memory Leaks (я наклеивая его ниже, потому что я установил некоторые ссылки):
Start, запустив leak report для автоматической проверки на наличие утечек памяти.
Этот блог подробно How to Find a Leaking Workbench Window.
Анализатор памяти вырос в SAP. В то время, Krum blogged about Finding Memory Leaks with SAP Memory Analyzer. Содержание по-прежнему актуально!
Это, вероятно, лучший инструмент, который вы можете получить (даже за деньги) для анализа дампа кучи (и утечек памяти).
PS: Я не работаю для SAP/IBM/Eclipse, я просто очень счастливый пользователь MAT с положительной обратной связью.
Как уже говорилось, jvisualvm - отличный способ начать работу, но как только вы знаете, что происходит, вам может потребоваться найти то, что держит ссылки на объекты, о которых я бы рекомендовал jmap и jhat, например.г
jmap -dump:live,file=heap.dump.out,format=b <pid>
и
jhat heap.dump.out
< где PID > легко найти из jvisualvm. Затем в браузере перейдите на localhost: 7000 и начните изучение.
- 1. Android WeakReference для устранения утечки памяти
- 2. Могу ли я использовать iframe для устранения утечки памяти?
- 3. Использование потоков для устранения утечки памяти в сторонних библиотеках iphone
- 4. После устранения утечки цвета
- 5. Пример утечки памяти Java
- 6. Java: Устранение утечки памяти
- 7. утечки памяти Java
- 8. Знаки утечки памяти Java
- 9. утечки памяти в Java
- 10. Утечки Java и памяти
- 11. исправление утечки памяти java
- 12. Symfony2 общая стратегия сеанса
- 13. Java hashmaps и утечки памяти
- 14. Ошибка утечки памяти Java LibGDX
- 15. Ошибка утечки памяти Java для старого приложения
- 16. Ошибка утечки памяти Java Stack
- 17. Общая стратегия для сложных многоэтапных запросов
- 18. [Java] Интерфейсы и утечки памяти
- 19. Утечки утечки памяти в «dojox/mvc/Output»
- 20. Общая стратегия для хранения анимированных мешей
- 21. nvd3 памяти приложения утечки
- 22. Утечки памяти в Iphone
- 23. Утечки памяти, singleInstance
- 24. Spring, Java: загрузка потокового файла для устранения ошибок в памяти
- 25. Общая стратегия тестирования многопоточной системы
- 26. Отладка утечки памяти JVM
- 27. Утечки памяти в javaScript?
- 28. Adobe AIR, утечки памяти
- 29. Использование Jconsole для утечки памяти
- 30. Бульдозер для проверки утечки памяти
В прошлый раз, когда я проверил, самое новое обновление было 16 ... :-) Не уверен, что VisualVM был представлен. Это так недавно? – PhiLho
JVisualVM был добавлен в JDK в 1.6.0_07, я считаю. –
Запустите VisualVM. Выберите текущий процесс из списка. Щелкните правой кнопкой мыши и выберите кучу дампа. Пусть это бежит немного. Захватите другую кучу кучи. Затем используйте «Файл»> «Сравнить снимки памяти», чтобы узнать, что изменилось. –