Als erste Option im Profiler-Dialog ist auf der linken Seite der "Monitor" zu finden.
Hier können eigene Voreinstellungen als Profile abgespeichert werden.
In den "Basic Settings" gibt es hier nur die Möglichkeit "Thread Monitoring" zu aktivieren.
Um den Performance-Einbruch durch das Profilen zu sehen, ist am unteren Ende des Dialogs ein Balken dargestellt,
welcher ein ungefähres Bild des Overheads abgibt.
Da die "Monitor Application" jedoch sehr schnell abläuft, ist praktisch kein Performance-Verlust festzustellen.
Deswegen bleibt der Balken bei "Monitor Application" auch immer leer.
In den "Advanced Settings" können zusätzlich globale Einstellungen überschrieben werden.
Nach dem Klicken auf "Run", startet das Programm und die Profiling-Ansicht öffnet sich.
In der Profiling-Ansicht lassen sich jetzt verschiedene weitere Ansichten öffnen.
Hier kann die Heap-Größe live angeschaut werden.
Und wie bei allen Diagrammen im netbeans profiler lassen sich mit der Maus
die Werte zu dem gewünschten Zeitpunkt anzeigen.
In dem Tab "Memory (GC)" können Details zum Garbage Collector betrachtet werden.
Eine "Surviving Generation" ist eine Generation die zumindest eine garbage collection überlebt hat.
Eine Generation ist ein Set von Exemplaren.
Bei einem normalen Programmverlauf steigt die Anzahl der "Surviving Generations" nach Programmstart,
sollte aber nach einiger Zeit ein stabiles Limit haben.
Wenn sie dennoch kontinuierlich über einen längern Zeitraum steigt, egal wie schnell,
befindet sich wahrscheinlich ein Memory Leak in der Applikation.
In dem Tab "Threads/Loaded Classes" ist die Anzahl der Threads und die Anzahl der geladenen Klassen als Zeitlinie zu sehen.
Da anfangs "Enable threads monitoring" aktiviert wurde, ist es nun möglich
live die Threads zu sehen. Wie zum Beispiel in der Timeline:
Hier sieht man die an der Programmausführung beteiligten Threads in Form von Säulen innerhalb einer Zeitskala. Z.B. erkennt man dass der Thread "main", nachdem er weitere Methoden aufgerufen hat, nicht mehr benötigt und beendet wird. Mit dem Start der "AWT"-Funktionen ist z.B. der "AWT-Windows"-Thread durchgehend aktiv. Mit ihm wird auch die "AWT-Event-Queue" gestartet, die, wie man in der Abbildung gut erkennen kann, sich die meiste Zeit im Zustand "Wait" befindet und bei Eintreten eines Events kurzzeitig in den Zustand "Running" übergeht.
Oder auch hier in der tabellarischen Ansicht in der die Zeiten der Threads in Sekunden und auch prozentual zu sehen sind:
Ebenfalls besteht die Möglichkeit eine Detail-Ansicht für jeden Thread zu öffnen, in welcher Thread-Zustände in einem Kreisdiagramm zu sehen sind.
Neben einer Timeline und einem hilfreichen Info-Text (zumindest bei den Java-Threads) werden auch die absoluten Laufzeiten und relativen Anteile der
Threadzustände an der Gesamtlaufzeit ausgegeben.
In dem Tab "Details" gibt es ein Log-Window in der sich für jede Status-Änderung des Threads einen Eintrag befindet: