Ui, das finde ich ja hübsch! Wie aufwändig wäre es, das statt des Webinterfaces in ein ins Programm integriertes Modul (Komponente oder
Unit mit eingängigem Interface) zu pressen? Wäre für mich sehr praktisch, da ich einige Langzeitsysteme habe, die aber nicht am Internet hängen (dürfen), bei denen ich gerne nachprüfen würde, ob meine "ReportMemoryLeaksOnShutdown"-Sandbox-Tests und "Taskmanagerspeicherverbrauchbegucken" auch im lebenden System noch so gut aussehen. Dafür müsste ich das eben nur lokal auf der Maschine irgendwie loggen und ggf. aufbereiten/anzeigen können.
Das geht im Prinzip problemlos. Die Daten werden über eine Middleware zwischengespeichert, der es egal ist wer (Webinterface oder
GUI Anwendung) oder wieviele auf die Daten zugreifen: wenn eine Anwendung über das Webinterface überwacht wird, können gleichzeitig eine oder mehrere
GUI Clientanwendungen die gleichen Daten abfragen.
Daraus ergibt sich, dass das
GUI Interface auch in die überwachte Anwendung integriert werden kann. Der Overhead der sich aus der Aufbereitung der Daten ergibt hängt davon ab, ob nur aktuelle Daten (Snapshots) oder auch Zeitverläufe (Timelines aus z.B. jeweils den letzten 100 Datensätzen) gebildet werden.
Internetzugriff ist eigentlich nicht erforderlich (lediglich in der Demo benutze ich die Google Chart
API Javascript Bibliotheken, die im Internet liegen, man könnte sie im Prinzip auch lokal speichern oder durch andere ersetzen).
Am einfachsten wäre es in die Anwendung eine Javascript-fähige Webbrowser-Komponente einzubinden, die dann auf den eingebetteten VisualVM (HTTP-)server zugreift. Das geht problemlos bei geschlossener Firewall. Ich schaue mal ob das in der ersten Release machbar ist.
p.s. das dynamische Beispieldokument unter
http://www.habarisoft.com/visualmm.html enthält jetzt vier Charts, zwei sind nach Allokationsgröße und zwei nach Zeitpunkten auf der X-Achse aufgebaut:
1. FastMM Memory Block Count (current snapshot)
2. FastMM Overall Block Count (timeline for last n snapshots)
3. FastMM Memory Block Size (current snapshot)
4. FastMM Overall Block Size (timeline for last n snapshots)