jak profilować źródło java za pomocą edytora pomysłów intellij? [Zamknięte]


83

Wiem, że Netbeans ma coś w rodzaju „zintegrowanego” profilera, na przykład możesz uruchomić testy jednostkowe i użyć go do analizy i znalezienia tego, co je spowalnia, gdzie są wąskie gardła. Czy można profilować kod w edytorze IntelliJ IDEA?


1
O ile wiem, istnieje tylko jedna darmowa integracja z profilerem: VisualVM .
CrazyCoder,

Najwyraźniej istnieje niewolna wtyczka JProfiler, FWIW stackoverflow.com/a/21156875/32453
rogerdpack

Dzisiaj zainstalowałem wtyczkę VisualVM w INtellij IDEA ... początkowo napotkałem jakiś problem, ale kiedy postępowałem zgodnie z instrukcjami podanymi na blog.idrsolutions.com/2013/05/ ... mogłem łatwo skonfigurować visualVM
Shirishkumar Bari

2
Kolejne pytanie, które jest zbyt praktyczne i przydatne, aby pozostać otwarte. SO powinny wspierać pytania z zestawów odpowiedziami {n} gdzie wystarczająco dobry wynik (-i) z zestawu: [ X, Y, Z] Wzrost do góry przez społeczność, a reszta zniknie / wymagają dodatkowego działania ze względu na naturalny falloff. Ponownie za pośrednictwem społeczności. „Naprawdę chcesz odpowiedzieć na to pytanie? Bo jest już odpowiedź, która została uznana za całkiem cholernie dobrą?” - Tak, bo teraz jest lepsza najlepsza odpowiedź. To znaczy, że nigdy się to nie dzieje w oprogramowaniu, prawda?
P.Brian.Mackey

1
FYI: W IntelliJ IDEA v2018.3 Ultimate Edition, JVM Profiler jest dostępny jako funkcja eksperymentalna. Zobacz blog.jetbrains.com/idea/2018/09/…
chipiik

Odpowiedzi:


55

Możesz wypróbować bezpłatną integrację z VisualVM Profiler za pomocą wtyczki .


Wygląda na to, że jeśli kupisz IntelliJ „ultimate”, to mówi się, że zawiera również wbudowanego agenta profilującego YourKit. Nie za darmo, ale w zestawie, więc myślę, że związane z moim pierwotnym pytaniem :)
rogerdpack

4
Nie, agent YourKit pozwoli ci wykonać migawkę procesora / pamięci podczas kontaktu z pomocą techniczną z problemami z wydajnością, to nie sam profiler będzie cię kosztował dodatkowe 500 $ +.
CrazyCoder,

1
@rogerdpack może po prostu otwórz VisualVM (masz go już zainstalowany przez jdk), wybierz swoją aplikację i naciśnij profil?
Matsemann

3
Problem z VisualVM uruchamianym przez wtyczkę VisualVM Launcher firmy Krasa: 1) w momencie rozpoczęcia testu zakończył się. 2) profilowanie w locie tworzy punkty aktywne i trudne do odczytania statystyki czasu procesora. W VisualVM jest pole wyboru "edytuj konfigurację", ale nie widzę, jak poprosić wtyczkę o rozpoczęcie testu we właściwy sposób - poczekaj, aż VisualVM uruchomi się i będzie gotowy - załaduj konfigurację profilowania testu do VisualVM - uruchom kod testu
uśmiechnij się

1
@ smile-on Czy znalazłeś rozwiązanie problemu polegającego na zakończeniu testów przed uruchomieniem programu VisualVM? Sam mam ten sam problem.
Stephen Murby

27

Jak wskazał Stephen Murby „problem polegający na tym, że testy kończą się przed uruchomieniem VisualVM”.

Tak, ta wtyczka VisualVMLauncher nie wstrzymuje twojego przypadku testowego do czasu uruchomienia VisualVM. Możesz również potrzebować czasu, aby ręcznie zmienić ustawienia profilowania specyficzne dla testu. Rozwiązanie jest proste, przypadek testowy musi się zatrzymać i poczekać, aż ręcznie powiesz mu, aby kontynuował. Można to zrobić na kilka sposobów:

1) wstaw System.in.read (); jako pierwsza linia przypadku testowego i gdy VisualVM jest gotowy, naciśnij Enter na konsoli.

System.in.read();

2) Jeśli program uruchamiający przypadek testowy nie zapewnia konsoli, poczekaj, aż zostanie utworzony jakiś magiczny plik.

3) Zawsze możesz grać spokojnie, śpiąc ()

sleep(5 seconds);

To obejście nie jest zbyt wygodne, ale działa dla mnie, ponieważ czasami trzeba profilować. Główną przyczyną problemu jest architektura wtyczek, zarówno IDEA, jak i VisualVM nie są uważane za współpracujące. Zobacz dyskusję z autorem wtyczki Mam nadzieję, że to pomaga.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.