sobota, października 09, 2010

Własny Wily Introscope


Założenie: chcemy zrobić własne oprogramowanie do profilowania/monitorowania Javy.

Taktyka: Jest sporo narzędzi do modyfikacji bajtkodu Javy - użyjemy jednego z nich np. Javassist. Dzięki temu będziemy mogli zinstrumentalizować klasy Javy tak, żeby na każdym wywołaniu metody mierzyć czas. Teraz trzeba wpiąć się w jakiś sposób do JVM, żeby z dogodnej pozycji modyfikować ładowane klasy. Weźmiemy się za sun.misc.Launcher, który posiada metodę loadClass. Możemy stworzyć własną wersję Launcher-a i ładować go za pomocą -Xbootclasspath/p:ścieżka_do_naszej_nowej_zabawki.
Najbardziej pracochłonnym zadaniem jest opracowanie struktur do przechowywania wyników.


Proof of concept znajduje się tutaj.

Co dalej wypadałoby zrobić z kodem? Osobny wątek zapisujący częściowe rezultaty. Wysyłaniem rezultatów na serwer powinna zajmować się osobna aplikacja. Serwer obsługiwałby agregację wyników, mógłby mieć webowy interfejs do ich prezentacji.

0 komentarze: