Ich muss messen, wie viel Speicher meine JUnit-Tests verbrauchen.Möglichkeiten zum Messen des Speicherverbrauchs während der Ausführung von JUnit-Tests
So ist die offensichtlichste (aber nicht convinient) Art und Weise ist JVM mit Argumenten wie „-Xms128m -Xmx512m“ laufen und verfolgen, wenn ich den OutOfMemory Fehler bekommen.
Die zweite Möglichkeit besteht darin, nach dem Ausführen aller Tests einen Heapdump anzufordern und dann das Memory Analyzer Tool zu verwenden. Aber es ist nicht sinnvoll, dies jedes Mal zu tun, wenn ich Tests durchführe.
Die gewünschte Art und Weise ist, sagen wir mal, den Speicherverbrauch in eine Datei mit Werten wie maximale Speicherverbrauch, Durchschnittsverbrauch, GC Anrufe zählen usw. zu protokollieren oder sogar ein Diagramm zeichnen, die zeigen, wie Speicher verwendet wurde .
Und die Frage ist, gibt es irgendwelche Werkzeuge, Methoden oder Instrumente, um dies zu tun? Oder vielleicht sind meine Wünsche unwirklich und naiv und es gibt keine Möglichkeit, solche Daten zu sammeln?
Tests laufen unter IntelliJ Idea mit JUnit4. Ich kann jede andere Umgebung benutzen. Vielen Dank im Voraus für jede Beratung!
Nun, wenn Sie einige Linux oder Unix-Server verwenden, eine einfache Möglichkeit wäre, eine Shell, die Ihr PID überwacht und die Speichergröße in bestimmten Intervallen ausdrucken. Sie müssten das Programm mit einem niedrigen -Xms und einem hohen -Xmx starten. Auf diese Weise überwachen Sie nicht die genaue Größe Ihres Objektspeichers, sondern zumindest den tatsächlichen Verbrauch Ihres Prozesses. Eine andere Idee, die mir einfällt, ist herauszufinden, wie ApplicationServer GC-Informationen zu Protokolldateien drucken und sehen, ob Sie Ihre Konfiguration so konfigurieren können, dass "Verbose GC info" gedruckt wird. Dies beinhaltet normalerweise detaillierte Informationen, die Sie später bei Bedarf interpretieren können. – Martin
http://www.jvmmonitor.org/ für Eclipse, oder einfach nur jconsole, etc. –
Kannst du nicht einfach einen Profiler verwenden, sagen wir aus Eclipse? –