2015-03-03 30 views
5

Podczas dzisiejszego wywiadu miałem trudne pytanie. Pytali mnie, jak znaleźć główną przyczynę błędu braku pamięci w moim kodzie produkcyjnym. Zacząłem mówić o profilerach. Osoba przeprowadzająca wywiad przeprowadziła ją w innym kierunku, mówiąc, w jaki sposób wygenerować ruch w produkcji, aby skorzystać z profilera. Nie miałem pojęcia. Wszelkie informacje będą bardzo pomocne.Wykrywanie wycieków pamięci w kodzie produkcyjnym

Odpowiedz

3

Profilers nie są najlepszym narzędziem do ścigać wycieków pamięci w produkcji

  1. profilowania nie są prowadzone na JVMs produkcyjnych
  2. jest często niemożliwe do odtworzenia w dev lub przetestować warunki, które stworzyły wyciek pamięci w produkcyjna (wskazówka wywiad)

rozwiązanie to ma zrzutu stosu (na przykład za pomocą jmap JVM - zależny) i analizuje je za pomocą narzędzia takiego jak doskonała (i swobodnie dostępnego) SAP Memory Analyzer (MAT)

+1

Uwaga: Zerwanie sterty blokuje tylko serwer aplikacji, a czasami aplikacja może ulec awarii. I przypuśćmy, że przydzielono 12 GB do jvm podczas produkcji, do analizy zrzutu sterty potrzebujesz innej maszyny z ponad 12 GB. Możesz również użyć jvisualvm do analizy. Jest wysyłany jako część do JDK. –