Frage

Ich weiß, dass ähnliche Fragen zu diesem Thema, bevor hier auf SO gefragt worden, aber lassen Sie mich beschreiben genau das, was ich tun muß:

Ich habe eine Reihe von Tests, die eine Befehlszeile Java-Anwendung ausführen, und ich möchte Speicherprofilierungs um sie hinzuzufügen. Eine Option, die ich sehen würde Code hinzufügen, um meine Anwendung (möglicherweise 3rd Party Tools / Bibliotheken), die eine Speicherabbilds bereitstellen würde. Eine andere Möglichkeit wäre, ein Drittanbieter-Tool zu verwenden, die / Instrumente meine Anwendung verwaltet und die JVM für mich (und idealerweise nicht von mir verlangen Code geändert werden). Ich denke an so etwas wie Valgrind aber für Java. Auch Open-Source, wenn überhaupt möglich.

Was ich wirklich tun möchte ist, um die Speichertests so einrichten, dass meine Speichernutzung in regelmäßigen Abständen überwacht wird, lassen Sie uns jede Sekunde sagen, und in einer Textdatei gespeichert. Auf diese Weise ich in der Lage sein würde, um zu sehen, ob der Speicherverbrauch pendelt / erhöht / verringert im Laufe der Zeit. Ich werde auch in der Lage sein, den maximalen und minimalen Spitzen zu berechnen.

Hat jemand hier etwas getan?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Mit etwas wie JProfiler alles, was Sie tun müssen, ist auf die JVM bestimmte Parameter hinzuzufügen. Es verwendet JVMTI.

Ich glaube, Sie sollten sich auf Profilier- liest und genau das, was sie für Sie tun. Ich schlage vor, auch auf JVMTI Lesen auf.

Die JVMTM Tool Interface (JVM TI) ist eine neue native Programmierschnittstelle für den Einsatz von Werkzeugen. Es bietet sowohl einen Weg, um den Zustand zu überprüfen und die Ausführung von Anwendungen in der Java Virtual Machine (JVM) ausgeführt zu steuern. JVM TI unterstützt die volle Bandbreite von Tools, die den Zugriff auf JVM Zustand benötigen, einschließlich, aber nicht beschränkt auf:. Profilieren, Debugging, Monitoring, Thread-Analyse und Berichterstattung Analyse-Tools

Hinweis: JVM TI ersetzt die Java Virtual Machine Profiler Interface (JVMPI) und die Java Virtual Machine Debug Interface (JVMDI). JVMPI und JVMDI wird in der nächsten Hauptversion von J2SETM entfernt werden.

Andere Tipps

Yourkit hat auch einen ziemlich guten Profiler

Haben Sie überprüft

VisualVM und eclipse Callisto ?

Ein guter Anfang ist, um zu sehen, ob Ihre JVM „java -Xrunhprof“ unterstützt, da dies Heap erzeugen kann Profilinformationen ohne Ihr Szenario komplexer zu machen.

Siehe http://docs.oracle.com/ JavaSE / 7 / docs / technotes / samples / hprof.html

Sie könnten, dass genug für Sie zum Starten finden.

Die Mehrere Profiler wie YourKit haben APIs für die Zuweisungen Speicher zu verfolgen. Eine weitere Möglichkeit sind hier Monitoring-Tools wie jxinsight  oder GLASSBOX oder jamon

Für Heap-Analyse Dumps des Eclipse-Memory Analyzer das beste Werkzeug ist, kann man bekommen. Es ist kostenlos und Open Source, so dass Sie die Analyse von Heap automatisieren können so viel Dumps wie Sie wollen.

Ich entwickle in Eclipse, aber ich habe Netbeans um seine hervorragenden Profiler zu verwenden. Es beschränkt sich auf einige kommerziellen Vergleich aber immer noch gut genug für die meisten Engpässe Spek

Sie können verwenden jrcmd , die ein Kommandozeilen-Dienstprogramm, das mit der JRockit JVM kommt. Wenn Sie die pid des Java-Prozess wissen, können Sie einfach tun:

JROCKIt_HOME\bin\jrcmd <pid> print_object_summary

und es wird Ihnen:

31.8% 3198k    41907   -137k [C
11.9% 1196k      300     +0k [B
11.4% 1151k    49118     +6k java/lang/String
 6.1% 612k     5604     +0k java/lang/Class
 4.3% 431k     2388     +0k [I
 3.5% 353k    15097     +0k java/util/HashMap$Entry
 ...

Zusätzlich zu den oben genannten Antworten Ich habe auch vor Profiler ein paar Jahren. Sie wissen nicht, ob das hilft.

ich dynaTrace Production Edition empfehlen. Erstaunlicher Werkzeugspeicher Anwendung profilieren. Low-Overhead und 100% der durchgeführten Transaktionen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top