2011-10-22 9 views
8

Próbuję selektywnie monitorować/profilować aplikację Java po spełnieniu określonych warunków środowiska wykonawczego. Już jestem w stanie zrzucić stertę w locie przy pomocy HotSpotDiagnosticMXBean, co było całkiem przydatne.Programowanie programatora Java HPROF programowo

Próbuję teraz zrobić coś podobnego z profilowaniem procesora, mając nadzieję na skuteczniejsze kierowanie na określone ścieżki kodu. Mam pewne doświadczenie z wierszem poleceń HPROF interface i profilerem NetBeans, ale oba muszą być wcześniej uruchomione.

Czy istnieje sposób na aktywację profilera HPROF programowo z poziomu uruchomionej aplikacji? Najlepiej coś, co pozwoliłoby mi na rozpoczęcie i zatrzymanie procesu profilowania do woli?

Odpowiedz

1

Zgodnie z , biblioteki rodzimego agenta, takie jak hprof, muszą zostać wczytane bardzo wcześnie podczas inicjowania maszyny JVM, zanim zostanie wykonany kod bajtowy. Więc nie, nie można tego robić w locie.

Alternatywą może być ponowne uruchomienie procesu java ze zmodyfikowanymi parametrami maszyny JVM w ramach funkcji głównej, chociaż nie jest to trywialne.

+0

Niestety, wydaje się, że jest to właściwa odpowiedź, przynajmniej jeśli chodzi o HPROF ... +1 – thkala

+0

Nie jestem przekonany, że to dobra odpowiedź. To zależy bardziej dokładnie od tego, do czego odnosi się pierwotne pytanie. Cytowana dokumentacja mówi, że agent profilujący musi wystartować, zanim JVM wykona dowolny kod ... nie oznacza to, że profilowanie musi się rozpocząć przed rozpoczęciem wykonywania kodu. Profiler może się uruchomić, a _profiling_ można uruchomić później. Przydatny byłby programowy sposób kontrolowania rozpoczęcia profilowania. Czy możesz powiedzieć, że _profiling_ musi rozpoczynać się przed wykonaniem jakiegokolwiek kodu? I zacytować odniesienie? – Jason

Powiązane problemy