Was könnt ihr empfehlen, mit Java zu verwenden?
Die einzige Voraussetzung ist, dass es Open Source ist oder keine zu teure akademische Lizenz hat.
Was könnt ihr empfehlen, mit Java zu verwenden?
Die einzige Voraussetzung ist, dass es Open Source ist oder keine zu teure akademische Lizenz hat.
Antworten:
Die mit jdk6 gelieferte VisualVM enthält einen grundlegenden Profiler. VisualVM wird mit dem JDK geliefert. Wenn Sie also das JDK6 installiert haben, haben Sie es wahrscheinlich auch installiert.
VisualVM
zuvor mit Erfolg verwendet, aber es stürzte für mich ab, als ich versuchte, eine Tomcat-App zu profilieren. Dies funktionierte für mich: github.com/jvm-profiling-tools/honest-profiler
Sie erhalten eine Liste haben hier (sie unten Listing, in Fall wird Verbindung unterbrochen)
- JMemProf
- JMP
- DrMem
- JTreeProfiler
- NetBeans Profiler
- JAMon API
- JBoss Profiler
- MessAdmin
- InfraRED
- TomcatProbe
- Java Interactive Profiler (JIP)
- Profiler4j
- Stoppuhr
- JMeasurement
- DJProf
- TIJmp
- Allmon
- Appspy
- EurekaJ
- Japex
- OKTECH Profiler
- Perf4j
Ah. Netbeans Profiler , der Gewinner des "Produkts des Jahres" von developer.com im Jahr 2009.
Java verfügt über einen integrierten Profiler namens HProf . Ich finde es nützlich, die Ergebnisse mit den Ergebnissen von Profilern mit umfassenderen Funktionen zu vergleichen.
Das Open-Source-Tool jvmtop enthält einen grundlegenden Konsolenprofiler. Beispielausgabe:
JvmTop 0.7.0 alpha - 15:16:34, amd64, 8 cpus, Linux 2.6.32-27, load avg 0.41
http://code.google.com/p/jvmtop
Profiling PID 24015: org.apache.catalina.startup.Bootstrap
36.16% ( 57.57s) hudson.model.AbstractBuild.calcChangeSet()
30.36% ( 48.33s) hudson.scm.SubversionChangeLogParser.parse()
7.14% ( 11.37s) org.kohsuke.stapler.jelly.JellyClassTearOff.parseScript()
6.25% ( 9.95s) net.sf.json.JSONObject.write()
3.13% ( 4.98s) ....kohsuke.stapler.jelly.CustomTagLibrary.loadJellyScri()
Hier ist ein Artikel über Java Application Profiling mit TPTP und ein Tutorial zum Profiling von J2SE 5.0-basierten Anwendungen mit Eclipse TPTP .
Wenn Sie nach einem einfachen, benutzerfreundlichen Open Source-Profiler suchen, sollten Sie sich Jip ( Java Interactive Profiler ) ansehen . Es wird unter einer BSD-Lizenz veröffentlicht. Ich fand es sehr nützlich für kleine Programme. Zumindest sind die Ergebnisse viel einfacher zu verstehen als die Ausgabe von hprofs.
Java Mission Control kann kostenlos für die Entwicklung verwendet werden und ist in Eclipse integriert. Der Overhead ist sehr gering (<1%), da er sich auf die Daten stützt, die die JVM ohnehin sammelt.
Es ist sehr einfach zu bedienen und kann auch viele Informationen enthalten, die Sie normalerweise in anderen Profiling-Tools nicht finden, z. B. Latenzprofile, Online-Speicherinspektion und detaillierte GC-Statistiken
Dies ist schnell, schmutzig und sehr effektiv: Nehmen Sie einfach ein paar Thread-Dumps oder halten Sie das Programm mehrmals an und sehen Sie sich die Stack-Traces an.
Betrachten Sie die neuesten https://github.com/jvm-profiling-tools/async-profiler
Dieses Projekt ist ein Low-Overhead-Sampling-Profiler für Java, der nicht unter dem Safepoint-Bias-Problem leidet . Es verfügt über HotSpot-spezifische APIs zum Sammeln von Stack-Traces und zum Verfolgen von Speicherzuordnungen. Der Profiler arbeitet mit OpenJDK, Oracle JDK und anderen Java-Laufzeiten, die auf HotSpot JVM basieren.
Es ist auch in IntelliJ IDEA Ultimate integriert: https://www.jetbrains.com/help/idea/cpu-profiler.html .
Es gibt auch ähnliche https://github.com/jvm-profiling-tools/honest-profiler .
Der Vergleich zwischen async-profiler
und honest-profiler
: https://github.com/jvm-profiling-tools/async-profiler/issues/77
Netbeans IDE enthält einen kostenlosen Profiler.
Wenn ich mich richtig erinnere, ist die akademische Lizenz für JProfiler (relativ) günstig.
JVM Monitor ist ein in Eclipse integrierter Java-Profiler zur Überwachung der CPU-, Thread- und Speichernutzung von Java-Anwendungen.
Wenn eine weitere gründliche Analyse erforderlich ist, können Sie als nächsten Schritt andere Tools (z. B. TPTP , Memory Analyzer ) verwenden.