I tried YourKit Profiler 5.0, and it was great.  It is easy to use and to integrate with various IDEs.  But profiling CPU usage for short-term running applications will require you to change some options.


2005/11/2, Alex Karasulu <aok123@bellsouth.net>:

---------- 전달된 메시지 ----------
From: info@yourkit.com
To: akarasulu@apache.org
Date: Tue, 01 Nov 2005 14:07:50 +0300
Subject: YourKit Java Profiler 5.0 Released
We would like to inform you that Yourkit Java Profiler 5.0 has been released.
It can be downloaded at http://www.yourkit.com/download/

Changes in version 5.0 from 4.0:

New and improved platform support

    * New: 64-bit Java on Windows X64 (AMD64) supported
    * New: 64-bit Java on Linux AMD64 supported
    * New: 64-bit Java on Solaris SPARC supported
    * New: 64-bit Java on Solaris AMD64 supported
    * Mac OS X 10.4 "Tiger" Java 5.0 / JVMTI support
    * Mac OS X: "Aqua" Look and Feel
    * Mac OS X: screen menu bar
    * Mac OS X: adapted keymap
    * Mac OS X: other UI improvements

Telemetry views

    * This new feature, available when a profiled application runs on Java 5.0 and higher,
      allows viewing key information about an application in runtime within live graphs,
      providing details about memory, garbage collection activity, loaded classes, threads,
      as well as JVM and OS information.
    * Telemetry information for some recent time period is remembered inside the profiler agent.
      This allows to connect to profiled application on demand, being able to discover how the
      application behaved in the past.
    * Telemetry information can be saved to a file and later re-opened in the profiler UI.

Memory profiling

    * New feature "Biggest objects" automatically shows the list of objects with biggest retained sizes
    * Ability to automatically capture snapshot on low memory. You can instruct the profiler to
      capture memory snapshot when used memory reaches specified threshold. The threshold can
      be set up and later altered during profiled application run time. The default value can
      be specified in command line ('usedmem' option - see -agentlib:help), or via IDE plugin UI.
      This feature is supported for Java 1.4 and higher.
    * New action "Memory | View Retained Objects" (Shift-F4). One of use cases for this action:
      browsing "Biggest objects" for the entire snapshot, you may be interested why some particular
      object retains memory. Simply select the object in the list, apply the action, and then, in
      new tab that will be opened, search for "Biggest objects", or browse "Class tree" etc.
    * Scalability improvement: it is possible to work with much bigger memory snapshots
    * Memory profiling (JVMTI only): references from class to its constant pool entries (i.e. string literals)
    * Objects in the finalizer queue are treated as garbage
    * Object allocations are correctly recorded on Java 5.0/6.0 with JVMTI for arrays and
      objects created via cloning, reflection etc.
    * Allocation profiling: new "Method list" view
    * Allocation profiling: Hot spot lists are more compact and thus more useful, through
      excluding methods that delegate object creation to other methods. Additionally, the hot
      spots now include directly called filtered (i.e. library) methods, as well as non-filtered
      (methods from profiled application).
    * Allocation profiling: Merged callees: own allocations are shown as well
    * Allocation profiling: Merged callees: better handling of recursive methods
    * Allocation profiling: "Go to method by name" feature is back
    * Internal optimization: less memory required to load memory snapshots with allocations

CPU profiling

    * CPU times results accuracy is increased for the platforms that provide appropriate support
      for thread time measuring. At the moment these platforms are: Windows NT/2000/XP and Solaris.
      We're looking forward to use the same approach for the latest Linux kernels, and are
      investigating whether this approach is possible for Mac OS X.
    * The ability to measure method invocation counts in addition to CPU times is implemented using
      dynamic bytecode instrumentation approach, that allows to significantly reduce impact on
      performance of profiled application in comparison with approach used in previous versions
      of the profiler. This ability is only available in Java 5.0 or higher, because older JVMs
      do not provide appropriate means for dynamic bytecode instrumentation.
    * New "Method list" view
    * Hot spot lists are more compact and thus more useful, through excluding methods that delegate
      resource consumption to other methods. Additionally, the hot spots now include directly called
      filtered ( i.e. library) methods, as well as non-filtered (methods from profiled application).
    * Merged callees: own times are shown as well
    * Merged callees: better handling of recursive methods
    * "Go to method by name" feature is back
    * Internal optimization: less memory required to load CPU snapshots

IDE Integrations

    * When profiled application is launched from IDE, the profiler UI automatically opens and
      connects to the application (If found obtrusive, this option can be turned off from plugin UI)
    * "Profile" action by default starts application with CPU times measuring (can be changed from plugin UI)
    * Eclipse 3.1 supported
    * Eclipse: problem fixed: navigation feature didn't work on some project configurations
    * IntelliJ IDEA: plugins are installed into user home, into IDEA's standard config directory.
    * IntelliJ IDEA: if you launch profiling application with Java 5.0, but the Java version cannot
      be retrieved via IDEA's Open API, you may take advantage of Java 5.0 profiling capabilities,
      selecting "Force profiling with Java 5.0 API (JVMTI)" checkbox in the "Startup/Connections"
      tab of a run configuration.
    * NetBeans: Tomcat profiling is now supported via the "Profile" action
    * NetBeans: navigation feature now supports anonymous inner classes
    * JDeveloper: addtional profile options are configured from UI
    * JBuilder: addtional profile options are configured from UI
    * Bug fixes

J2EE Integrations

    * Sun Java System Application Server (previously named SunONE) 7.x/8.x supported
    * Apache Geronimo supported
    * Special treatment of Tomcat running as Windows service in the integration wizard
    * Oracle Application Server 10g supported
    * JRun: ability to specify target Java version (1.3/1.4 vs 5.0) in the integration wizard
    * JRun server: supported on Mac OS X
    * If integration with J2EE server cannot be performed fully automatically, user is shown an
      appropriate error message and is instructed how to integrate manually
    * Integration wizard generates scripts that choose appropriate system-dependent agent library
      in runtime. In particualr this allows to e.g. generate script on Windows for Linux server
      where running the profiler UI is not possible.

Other important improvements

    * All locally running profiled applications are correctly detected on all supported platforms.
    * List of applications to connect for each application shows a descriptive name based on main
      class or jar-file of the application.
    * To distinguish snapshots captured on exit, they are named with prefix based on main class
      or jar-file of the profiled application.
    * Verbose application name based on main class or jar-file is avalable on Mac OS X as well.
    * User interface options cleanup. On Mac OS X there's no configuration dialog at all, and all
      settings are retrieved automatically.
    * Connection UI changed
    * Added ability to connect to remote application given host only
    * Java 6.0 "Mustang" supported (tested with b42)
    * UI: "Useful actions" in profiler views
    * Some changes in the profiler API
    * Some changes in the command line parameters of the agent
    * Improved legends
    * Welcome screen that is a good starting point to begin work with profiler
    * An example of Java application can be launched directly from the Welcome screen, that helps
      to start exploring the profiler with no additional setup
    * Context-related hints give short description and explain purpose of each of the profiling views
    * Improved Help
    * Other UI improvements

Best regards,
The YourKit Team
"Don't get lost in data, get information!"

If you would not like to receive any more information about
YourKit Java Profiler, simply send an email info@yourkit.com
with the subject line "unsubscribe".

what we call human nature is actually human habit