About the Early Access Program

YourKit Early Access Program (EAP) is the easiest way to get in touch with the latest technologies from YourKit. You can have early access to new products and internal builds.

NOTE: THIS IS PREVIEW SOFTWARE AIMED AT PROVIDING YOU WITH AN OPPORTUNITY TO TEST THE NEWEST FEATURES SCHEDULED FOR THE NEXT MAJOR RELEASE. YourKit, LLC DOES NOT GUARANTEE THAT THIS SOFTWARE WILL RUN TROUBLE-FREE. USING THIS SOFTWARE IS AT YOUR OWN DISCRETION AND DOES NOT ENTITLE YOU TO ANY CUSTOMER SUPPORT.

Feedback

Your comments, suggestions and bug reports are welcome. In the forum you can discuss product features with YourKit developers and post bug reports.


About YourKit Java Profiler 9.0

The version 9.0 will be the next release of YourKit Java Profiler.

See the change list below to learn about new features and changes


Download 9.0 EAP, build 5034 (February 4, 2010)

Download Windows installer Size 24M

Download ZIP archive (Linux, Solaris, FreeBSD, HP-UX) Size 14M

Download Mac OS X zipped application Size 5M


You don't need a license key to use EAP build. Just install the build and use it.


Changes in build 5034

  • Memory profiling: UI: new feature: Class hierarchy slave view allows to see superclasses and extending classes for given class

  • Memory profiling: UI: new feature: Class list has new slave view "Class statics", which allows to quickly browse static fields and constant pool references of selected class

  • Memory profiling: UI: new feature: action "Memory | View Selected Objects Class" (also available in popup menus) opens classes (java.lang.Class instances) for selected object(s)
  • Probes: new built-in probe Threads monitors some aspects of thread life cycle:

    • where (frame/thread) and when thread objects (instances of java.lang.Thread or its subclass) are created
    • where (frame/thread) and when threads are started (Thread.start() invoked)
    • where (frame/thread) and when thread name is changed (Thread.setName() invoked)

    In particular, this can help finding problems such as:

    • threads created but not started
    • thread naming issues
    Read more...
  • Probes: built-in probe Servlets improved: added monitoring of javax.servlet.Filter.doFilter() method. In particular, this will provide useful results if Apache Tapestry framework is used.
  • Probes: scalability improvements.

    Added ability to limit the number of probe table rows to be recorded in the profiler agent and processed in the profiler UI.

    This is not a final solution. Upcoming builds will provide extended capabilities to customize agent data collection policy, as well as UI means to effectively access tables with big number of rows.

    • In profiler agent: startup option probetablelengthlimit=<number of rows> limits the number of rows to be stored by the profiler agent per table. If a table reaches the limit, it will no longer be populated. Default value is 10000.

    • In profiler UI: property -Dyjp.probe.table.length.limit=<number of rows> limits the number of rows which the profiler UI reads for each table when a snapshot is loaded or a running application is being profiled. Specify the property in:

      • Windows: <Profiler Installation Directory>\bin\win32\yjp.ini
      • Linux, Solaris, FreeBSD, HP-UX: <Profiler Installation Directory>/bin/yjp.sh
      • Mac OS X: <Profiler Installation Directory>/Contents/Info.plist

      By default, 10000 rows are loaded.

  • IDE integration: improvement: it is now possible to specify in the plugin UI whether a 32-bit Java or a 64-bit Java is used to launch profiled application, in order to choose appropriate profiler agent. Previously, it was required to re-run IDE integration wizard to change the JVM kind. Also, it is now possible to choose Java kind per run configuration in IDEs which provide such capabilities (Eclipse, IDEA). See tab "32-bit or 64-bit Java Selection" in the plugin configuration UI.

    For example, see how the configuration looks in Eclipse:

    ... and in NetBeans:

    Of course, IDEA and JDeveloper are also supported.

  • UI: Summary tab: available system properties are shown for Android HPROF snapshots (see changes in build 5032)
  • Problem solved: JRockit: improved handling of incorrect data provided by JRockit JVM under some rare circumstances, which could lead to crashes on memory snapshot capture. JRockit R27.5.6 is affected. It is possible that earlier versions of JRockit are also affected.

Changes in build 5032

  • New feature: ability to export basic snapshot views to *.csv, *.txt, *.html via a command line tool. For detail, see "Export with command line tool" here.
  • Quick info: improvement: an option to see non-filtered stack traces
  • New feature: ability to open Android HPROF snapshots, converted to standard format with Android's hprof-conv utility

Changes in build 5030

  • Probes: Built-in probe Sockets monitors stream-based and channel-based socket I/O, instead of previously used 2 separate probes. This improves presentation of results.
  • Probes: UI: bug fixed: under certain circumstances, dependent (lower) table row count might be incorrectly shown in master (upper) table column. In particular, this bug affected built-in probe Databases.
  • Improvements in samples scripts

Changes in build 5028

  • New platform supported: HP-UX. Running profiled applications and/or the profiler UI is now supported on HP-UX on IA64 architecture. Both 32-bit and 64-bit JVMs are supported.
  • Probes: Improvements in built-in probes FileStreams, FileChannels and RandomAccessFiles. File access via NIO channels is now registered in corresponding tables for file input streams, file output streams and random access files. This improves presentation of results.
  • Solaris: yjp.sh automatically starts the profiler UI with a 64-bit JVM if it is available
  • UI: Summary tab: new feature: list of all system properties is available ("System properties")
  • Non-Windows: improved diagnostic on attempt to start yjp.sh with an outdated Java version
  • API: return type of com.yourkit.api.MemorySnapshot.getShallowSize() changed from int to long

Changes in build 5026

  • Memory profiling: HPROF snapshots: object shallow sizes are calculated more accurately, taking into account some tricky cases of field alignment in memory. Note: if HPROF snapshot has index file created with an earlier version of the profiler, remove or re-create the index file.
  • Improvement: J2EE Statistics: an option to show/hide calls whose execution took less than 1 ms
  • Bug fixed: fixed issue which might prevent successful startup of profiled application running on some builds of IBM Java 6 (e.g. WebSphere)
  • Java 7 support: problem fixed: improper instrumentation of classes with new INVOKEDYNAMIC opcode
  • UI: Summary tab: improvement: Java version is shown with all available VM detail

Changes in build 5024

  • Probes: probe registration or unregisteration in runtime is dramatically faster now. As most probes are applied to limited set of classes (all built-in probes are such), registration or unregistration should complete almost immediately for them.
  • Optimization: bytecode instrumentation improvements
  • Problem fixed: applications using scala might fail starting with the profiler, due to some odd bytecode patterns generated by scala compiler

Changes in build 5022

  • Probes: ability to register and unregister probes in runtime. See "Manage Probes" in the right upper corner of the "Probes" tab when connected to profiled application.
  • Probes: "Timeline" view: new popup menu action "View in Table" navigates to row in its table
  • IDE integration: NetBeans 6.8 (release) supported
  • J2EE integration: GlassFish 3 supported
  • J2EE integration: improved profiling of applications running inside an OSGi container: there is no need to manually twick OSGi settings anymore to allow loading of the profiler classes

Changes in build 5018

  • Probes UI: improvements and fixes. In particular, full stack trace can be seen by clicking corresponding hyperlink.
  • Bug fixed: NetBeans: it was not possible to activate some profiling modes from startup under certain circumstances

Changes in build 5016

  • Mac OS X: CPU tracing: native methods are included to the profiling results

Changes in build 5014

  • Memory profiling: improvement: thread, stack and local variable name information will be available for "Stack local" roots even if profiled application runs with debugger. In previous versions, this information was not available running with debugger.
  • Memory profiling: problem solved: thread name was not shown for some thread objects (i.e. instances of java.lang.Thread or subclasses) in reference explorers
  • Mac OS X 10.6: problem fixed: profiled application might not start if its process identifier (PID) was bigger than 65536
  • Bug fixed: simultaneous running version 9.0 and version 8.0 profiler UIs might lead to incorrect detection of locally running profiled applications on Welcome screen

Changes in build 5012

  • UI: new feature: table columns are resizeable, and if column content does not fit, a scroller appears. Also, wide tables are scrollable themselves, like tables in spreadsheet applications.

    This dramatically improves usability working with Probes results.

    Another view to mention which will greatly benefit from this feature is Threads where very long thread names will not be cut off anymore.

  • New feature: profiler agent log is written to file <user home>/.yjp/log/<PID>.log instead of stderr. Successfully started agent writes to stderr only the following line: [YourKit Java Profiler <version>] Loaded. Log file: <full path to the log file> This line can be suppressed using startup option 'quiet'.

    With this new approach, the profiler agent log messages are easier to find if profiled application redirects its output to own log files or filters it, and will not be lost if the output goes directly to console, or if there is no console at all if the profiled application runs as a service. Also, the profiled application's output and its own log files are not cluttered with extra messages.

  • Probes: added utility class com.yourkit.probes.builtin.Messages which provides a method to store arbitrary text messages. They will be shown in "Probes" tab as "Messages" (the name of corresponding table).
  • Improvement: profiler events such as switching profiling modes, starting/stopping profiling, capturing snapshots etc. are now logged to the log file, as well as are available in "Probes" tab in "Messages" table (categories "Profiler" and "Profiler UI")

Changes in build 5010

  • Improvement: Filters: now it is possible to combine exclusive and inclusive patterns, i.e. to specify classes which must be filtered as well as classes which must not be filtered. In the latest case, prepend the pattern with "+". For example, org.apache.*,+org.apache.jsp.* will filter out Tomcat internals, but will not filter classes of particular JSP pages, which Tomcat generates in package org.apache.jsp.
  • New feature: profiled applications can run on Java 7 too
  • Mac OS X: improvement: memory snapshots contain values of primitive types
  • Probes: changes in API class com.yourkit.probes.Table

Changes in build 5006

  • Probes: UI: added action to focus on events intersecting with given event or group of events. To invoke, please use popup menu. For example, you can select particular servlet request, and see related events in other tables: database, file I/O etc.
  • Probes: Timeline view shows sequence of events from different tables, allowing to analyse nested events. Use popup menu in upper tables to select corresponding row in the Timeline.
  • Probes: added built-in probe for JSP/Servlets

Changes in build 5002

  • Probes: UI: ability to view full stack traces for selected row (use popup menu)

Changes in build 5000

  • New feature: Probes: extendable profiling and monitoring. Get almost unlimited capabilities to analyze issues specific to your particular application, as well as automatically recognize problems typical to wide range of applications. Read more...

    Currently available builds contain only small part of planned Probes functionality. Anyway, it is functional enough to get familiar with the concept of the Probes and to be used in solving real problems. Upcoming builds will provide more features and improve existing ones.

  • Only applications running on Java 6 or newer can be profiled. New functionality provided by this version of the profiler requires Java 6 APIs which are not available in earlier Java versions. For profiling Java 5 applications, please use the latest released version 8.0 of the profiler.
  • Improved Welcome screen. "Monitor Local Applications" panel provides an option to see all Java applications running on the machine, including those not started with the profiler agent. This greatly helps troubleshooting possible connection problems.

  • New feature: "Settings | Snapshot Directory..." allows to configure snapshot directory location. Read more...
  • New feature: ability to capture HPROF snapshot with JVM built-in dumper is now available on Mac OS X too
  • Mac OS X: improved desktop integration: ability to open exported files
WATCH DEMOS

WHAT'S NEW
November 5, 2009
YourKit Java Profiler 9.0 Early Access Program started Read more »
September 7, 2009
YourKit Profiler 4.5 for .NET released Read more »
AWARDS
JDJ Editors' Choice Award Winner YourKit Java Profiler received the Java Developer's Journal Editors' Choice Award.
"I had to collect data about a memory leak that happen over several hours of time in the production server. Using other profilers this was not possible since they kept on crashing. Using YourKit this was amazingly easy. It just ran in the background and I gathered statistics at certain moments in time and then compared them against each-other. YourKit is a really nice profiler and I use it now."
Geert Bevin,
Lead developer of RIFE
web application framework