2012-04-06 7 views
3

Ich habe gerade ein paar Tage damit verbracht, unsere Software zu verbessern, die viele unnötige Objektzuordnungen beseitigt. Die Verbesserungen sind dramatisch, ich kann jetzt einen Prozess ausführen, bei dem (fast) keine neuen Objekte zugewiesen werden. Megabytes auf Megabytes von gerade weggeworfenen Objekten wurden vor meinen Fixes erstellt.Analysieren/visualisieren Sie GC-Nutzungsmuster zwischen zwei Versionen eines Programms?

Jetzt möchte ich die Verbesserungen auf eine eindrucksvolle Weise visualisieren (es geht um messbare Auswirkungen :). Irgendwelche Tipps? Ich habe VisualVM für viele Instrumente verwendet, aber es zeigt nicht viel. Der Monitor zeigt etwas namens "GC-Aktivität", aber es ist nicht so nützlich. Idealerweise würde ich gerne eine kumulative Anzahl der Größe aller Objekte behalten, die vor und nach dem Fix im Prozess erstellt wurden. Irgendwelche Werkzeuge, die mir erlauben, das zu tun?

Danke!

+2

Warum nicht die * reale * Verwendung der angenommenen Optimierung messen und GC-Latenzen messen? (was ich vermutete, war der Grund dafür, dies zu tun). Die Menge des zugewiesenen Speichers ist eine ziemlich schwache Statistik dafür, wie gut GC funktioniert. – Voo

Antwort

2

Sie können GCMV verwenden. Es unterstützt viele verschiedene ausführliche GC-Formate und ermöglicht es Ihnen, Vergleichstabellen zusammenzustellen. Wir tun das oft für Speicherlecks, etc .. wo wir "Vorher und Nachher" Geschichten zeigen wollen.

Es macht auch lustige Zusammenfassungen rund um Dinge wie Gesamt-GCs, Gesamt-GC-Zeit, etc., die in diesen Fällen ziemlich überzeugend aussehen.