简体   繁体   中英

Open Source Java Profilers

What can you guys recommend to use with Java?

Only requirement is it should be open source, or has not too expensive academic licence .

The VisualVM which comes with jdk6 has a basic profiler inside it. VisualVM is provided with the jdk, so if you have the jdk6 installed, you likely have it installed as well.

https://visualvm.github.io/

you've got a list here (listing them below, in-case link gets broken)

  • JMemProf
  • JMP
  • DrMem
  • JTreeProfiler
  • NetBeans Profiler
  • JAMon API
  • JBoss Profiler
  • MessAdmin
  • InfraRED
  • TomcatProbe
  • Java Interactive Profiler (JIP)
  • Profiler4j
  • Stopwatch
  • JMeasurement
  • DJProf
  • TIJmp
  • Allmon
  • Appspy
  • EurekaJ
  • japex
  • OKTECH Profiler
  • Perf4j

Ah. Netbeans Profiler , developer.com's "Product of the Year" winner, in 2009.

Java has a basic built in profiler called HProf . I find it useful to compare the results it provides with results from more fully features profilers.

The open-source tool jvmtop does include a basic console profiler. Example output:

 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()

If you are looking for a no-frills, easy to use open source profiler, you may want to take a look at Jip ( Java Interactive Profiler ). It's published under a BSD license. I found it to be quite useful for small programs. At least, the results it gives are way more easy to understand than hprofs output.

Java Mission Control , it's free to use for development and it integrates with Eclipse. It has very low overhead (<1%) since it piggybacks on the data the JVM is gathering anyway.

It's very easy to use and it can also give a lot information you typically won't find in other profiling tools, eg latency profiling, online memory inspection, detailed gc statistics

很快,很脏,而且非常有效:只需要几次线程转储,或暂停程序几次,然后查看堆栈跟踪。

JVM Monitor is a Java profiler integrated with Eclipse to monitor CPU, threads and memory usage of Java applications.

If further deep analysis is needed, you may use other tools (eg TPTP , Memory Analyzer ) as a next step.

Consider cutting-edge https://github.com/jvm-profiling-tools/async-profiler

This project is a low overhead sampling profiler for Java that does not suffer from Safepoint bias problem . It features HotSpot-specific APIs to collect stack traces and to track memory allocations. The profiler works with OpenJDK, Oracle JDK and other Java runtimes based on HotSpot JVM.

It's also built-in into IntelliJ IDEA Ultimate: https://www.jetbrains.com/help/idea/cpu-profiler.html .


There is also similar https://github.com/jvm-profiling-tools/honest-profiler .

The comparison between async-profiler and honest-profiler : https://github.com/jvm-profiling-tools/async-profiler/issues/77

Netbeans IDE includes a free profiler.

Also, if I remember correctly, the academic license for JProfiler is (relatively) inexpensive.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM