Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Memory Leak Detection in a Java application or “Should we just add memory?”

Memory Leak Detection in a Java application or “Should we just add memory?”

Memory Leak Detection in a Java application or “Should we just add memory?”
Alexey Karpukhin, Senior Developer, Exactpro.
Dev Meetup: Kostroma
23/07/2019

Youtube Channel https://www.youtube.com/c/exactprosystems
Linkedin https://www.linkedin.com/company/exactpro-systems-llc
Instagram https://www.instagram.com/qakostroma/
Twitter https://twitter.com/exactpro

5206c19df417b8876825b5561344c1a0?s=128

Exactpro
PRO

July 23, 2019
Tweet

Transcript

  1. Build Software to Test Software exactpro.com Поиск утечек памяти на

    примере Java-приложения или "Может просто увеличим память?" Date: 23/07/2019 Author: Карпухин Алексей
  2. 2 Build Software to Test Software exactpro.com Нужно ли заботиться

    об освобождении памяти? “Вы просто создаете объекты, и как только надобность в них отпадает, эти объекты исчезают сами по себе. При таком подходе исчезает целый класс проблем программирования: так называемые «утечки памяти», когда программист забывает освобождать занятую память.”
  3. 3 Build Software to Test Software exactpro.com Сборщик мусора

  4. 4 Build Software to Test Software exactpro.com • The Serial

    GC (-XX:+UseSerialGC) • The Parallel GC (-XX:+UseParallelGC) • The Concurrent Mark Sweep (CMS) Collector (-XX:+UseConcMarkSweepGC) • The G1 Garbage Collector (-XX:+UseG1GC) Типы сборщиков мусора
  5. 5 Build Software to Test Software exactpro.com Типы сборщиков мусора

  6. 6 Build Software to Test Software exactpro.com Что такое утечка

    памяти? Нет утечки памяти Есть утечка памяти
  7. 7 Build Software to Test Software exactpro.com Изменение размера памяти

    • Задание максимального объема памяти -Xmx size (-Xmx80m) • Задание начального объема памяти -Xms size (-Xms6m)
  8. 8 Build Software to Test Software exactpro.com Что может помочь

    в обнаружении? • Профайлеры • Лог сборщика мусора • Дампы памяти • Eclipse Memory Analyzer
  9. 9 Build Software to Test Software exactpro.com Профайлеры

  10. 10 Build Software to Test Software exactpro.com • -verbose:gc 29.824:

    [GC (Allocation Failure) 302049K->58551K(470016K), 0.0287326 secs] 29.980: [GC (Metadata GC Threshold) 67930K->58819K(468480K), 0.0362835 secs] 30.016: [Full GC (Metadata GC Threshold) 58819K->21591K(504320K), 0.1115143 secs] Лог сборщика мусора
  11. 11 Build Software to Test Software exactpro.com • JDK •

    Jmap (jmap -dump:format=b,file=<file-path> <pid>) • Jcmd (jcmd <pid> GC.heap_dump <file-path>) • JVisualVM • Инструкция для автоматический сборки (-XX:+HeapDumpOnOutOfMemoryError) • JMX • Программная реализация • JConsole Дампы памяти
  12. 12 Build Software to Test Software exactpro.com • Java heap

    space • GC Overhead limit exceeded • Permgen space is thrown • Metaspace • Requested array size exceeds VM limit. Out of swap space • Compressed class space • reason stack_trace_with_native_method Ошибка OutOfMemory
  13. 13 Build Software to Test Software exactpro.com Eclipse Memory Analyzer

    Tool (MAT)
  14. 14 Build Software to Test Software exactpro.com Eclipse Memory Analyzer

  15. 15 Build Software to Test Software exactpro.com Eclipse Memory Analyzer

  16. 16 Build Software to Test Software exactpro.com Нерациональная реализация

  17. 17 Build Software to Test Software exactpro.com Нерациональная реализация

  18. 18 Build Software to Test Software exactpro.com Забытые объекты

  19. 19 Build Software to Test Software exactpro.com Это могут быть:

    • Сетевые подключения • Подключения к базе данных • Ресурсы работы с файлами Забытые ресурсы
  20. 20 Build Software to Test Software exactpro.com Увеличение памяти негативно

    влияет на производительность приложения. Увеличение памяти - решение?
  21. 21 Build Software to Test Software exactpro.com Увеличение памяти -

    решение?
  22. 22 Build Software to Test Software exactpro.com Спасибо!