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 8.0
The version 8.0 will be the next release of YourKit Java Profiler.
See the Change list for details on the features
Download 8.0 EAP, build 4042 (December 30, 2008)
Download
Download
Download
You don't need a license key to use EAP build. Just install the build and use it.
Changes in build 4042
-
Table column visibility is now configurable:
Changes in build 4040
- UI improvement: table column widths are chosen more accurately
- Minor fixes and improvements
Changes in build 4038
- "Memory | Strings by Pattern..." (Ctrl+F) action, in addition to searching in java.lang.String instances, now has an option to search in char arrays (char[]), as well as in byte arrays (byte[]) in specified encoding
- "Quick info" (Ctrl+Q) panel shows a text representation of byte arrays (byte[]) in specified encoding
- Problem with JRockit fixed: a memory snapshot capture could fail under some circumstances due to incorrect data provided by JRockit
- Memory profiling: class loaders are marked in object explorers with dedicated icon
Changes in build 4036
- Multiple improvements in thread telemetry UI
-
"Class loaders" view improvements:
- for each loader, the number of loaded classes is shown, as well as the number of classes without instance among them; this information can help finding leaked loaders
- paths from GC roots to the loader object are now explicitly available as a slave view; this allows to learn why particular loader is retained in memory
- "File | Compare Snapshot with..." now compares exception telemetry as well
Changes in build 4034
-
Telemetry graphs are now scalable.
Choose desired time resolution with the help of a toolbar button
or invoke a popup menu on the graph:
- "Callees list" view. Read more...
- J2EE integration wizard: "Generic server" option helps integrating with servers not explicitly supported by the wizard
Changes in builds 4000-4032
- Memory profiling
- CPU profiling
- Telemetry
- J2EE integration
- IDE integration
- UI improvements
- Miscellaneous
Memory profiling
-
New "Class loaders" view shows objects grouped by class loader
-
When you open "Class list" view, retained size estimation is immediately
shown for each class.
Of course, you still have an option to run retained size calculation to obtain exact sizes.
- Improved visualization of objects retained via local variables on stacks of running threads. The new approach is to treat such objects as "referenced" from its thread, instead of having them as top level GC roots of type [Stack Local] or [JNI Local]. This change affects retained size calculated for threads. In particular, this makes the dominator tree view an even more powerful tool for analysis of multithreaded applications such as for example J2EE servers.
-
Ability to profile object allocation without capturing a memory snapshot
by using "Memory | Allocations" tab.
Counts and sizes are shown for objects whose allocations have been recorded,
including objects which are still alive as well as objects that have been collected by the moment.
Note: this live view provides only basic information, and you still need to capture memory snapshot
to perform comprehensive analysis:
to separate live objects from dead objects, to see where live objects are retained, etc.
-
New inspection: non-serializable objects referenced from serializable objects.
If a class implements interface
java.io.Serializableand one of its serialized fields refers to a non-serializable object (directly or through intermediate objects),java.io.NotSerializableExceptionwill be thrown in runtime on attempt to serialize an instance of this class. This inspection automatically detects such situations. For example, use it to test whether yourHTTPSessionshave serialization problems. -
Values of char[] are shown in explorers
-
Thread name is shown for thread objects (i.e. instances of
java.lang.Threador subclasses) in reference explorers.The quick search allows to search objects by thread name if an object is a thread.
-
"Quick info" (Ctrl+Q) panel is also available as a slave view
- HPROF snapshots: thread names are available in Ctrl+Q
- HPROF snapshots: available system properties such as Java version, class path etc. are shown in the "Summary" tab
- Up to 50% (32-bit) and up to 30% (64-bit) faster retained size calculation, comparing with 7.5.x. This improvement is especially important calculating exact retained sizes in "Class list" view.
- Optimization: 5-10% less memory is used to load HPROF snapshots (actual numbers depend on particular snapshot). Also, HPROF snapshots load slightly faster.
-
Bug fixed: text values of
java.lang.Stringmight be incorrectly shown
CPU profiling
- New "Callees list" view
- CPU profiling: bug fixed: incorrect wall times under certain circumstances
Telemetry
-
New feature: exception telemetry
Read more...
-
New feature: thread status telemetry
"Time" column shows CPU time for each thread; with its help, you can sort threads by CPU time:
You can click at certain time point to see stack traces.
-
Thread stack and state telemetry can be enabled or disabled in runtime
- Ability to change the telemetry buffer capacity with the help of "telemetrylimit" startup option. By default, the telemetry buffer is limited to store approximately 1 hour of recent telemetry data. With the help of this new option you can extend this time period if needed.
J2EE integration
- J2EE server integration improved: utilizing Java 5 (and newer) capabilities resulted in simpler and thus more reliable integration procedure. In particular, less changes are needed to generate J2EE server scripts, that resolves many problematic cases of e.g. edited/modified scripts which prevented successful integration in previous versions.
-
J2EE server integration wizard improvement:
added ability to specify startup options.
Also, the following options are offered by default:
- "disablestacktelemetry" to ensure minimum profiling overhead
- "delay=10000" to prevent startup issues with some J2EE servers
- J2EE integration wizard: Mac OS X: space characters removed from the default installation directory name to prevent J2EE integration wizard issues related with incorrect handling of paths with spaces in some server startup scripts
IDE integration
- NetBeans 6.5 supported. Known issue: profiling J2EE targets from within the IDE may not work. This will be fixed in nearest builds. As a workaround, start profiling via the profiler's J2EE integration wizard.
- JDeveloper 11g supported. Known issue: profiling J2EE targets from within the IDE may not work. This will be fixed in nearest builds. As a workaround, start profiling via the profiler's J2EE integration wizard.
UI improvements
-
Locally running profiled applications are immediately
listed on the Welcome screen
- Welcome screen: improved user experience when using on machines with small display resolution
- In all views where thread names are shown, thread native IDs are shown as well if available
- If snapshot capture fails because there is no free space on disk or other I/O error occurs, user gets detailed error message describing the problem
- Snapshot comparison views have an option to show only positive or only negative differences
-
"Summary" tab: improved paths and parameters visualization displaying components split by lines
-
"File | Open Snapshot..." dialog: added ability to open snapshots compressed with GZIP
(in addition to the ability to open snapshots stored in ZIP file which existed in previous versions of the profiler).
Press "Open Snapshot Not Listed Here..." button, choose "All Files" filter and select a
.gzfile. Note: the profiler itself does not compress snapshots; instead, one can explicitly compress an existing snapshot file for e.g. reducing network traffic transferring the snapshot from a server where it was created to developer machine for further analysis. -
"File | Open Snapshot..." dialog: snapshot full file path is shown in a tooltip
-
Welcome screen: tooltip in recent snapshot list shows snapshot full file path,
size and modification date
- Stability improvements: fixed occasional exceptions that might happen after closing a snapshot
Miscellaneous
-
FreeBSD 7 i386 and amd64 (aka x86_64) is now supported.
We tested with Diablo Caffe JDK 1.6.0-7 for i386 (32-bit JVM) and amd64 (64-bit JVM).
Possibly, you will be able to profile applications on Diablo JDK 1.5.0, too. However, this Java version is not supported by FreeBSD anymore, and we have no plans to support it. Please use Java 6 instead. WE DO NOT SUPPORT FREEBSD JAVA 5 AT ALL: we will not solve any issues should they arise.
FreeBSD CPU profiling limitations: FreeBSD 7 does not provide means to obtain CPU time spent in certain thread, but only in entire process. As we have learned, such means will first appear in FreeBSD 8 (technically, it is clock_gettime() call with CLOCK_THREAD_CPUTIME_ID). Due to this, ALL times measured by means of CPU profiling will look like wall times, disregarding your wall vs. CPU time settings in "Settings | Wall Time Methods...". Also, thread CPU time will be same for all threads in thread telemetry.
-
Command line tool to control profiling without using the profiler UI.
In some cases it can be used instead of the profiler API.
Run
for help.java -jar yjp-controller-api-redist.jar -
Export to HTML: ability to pack all generated files to a single ZIP archive
-
Automatic deobfuscation: added support of
- RetroGuard's repackaged classes option
- yGuard bytecode obfuscator
- ProGuard bytecode obfuscator
-
Specify
-Dyjp.alternate.temp.dir=<directory>property to alter the directory where temporary files are created opening a memory snapshot. You may want to use a non-default location if there is not enough disk space in the user's default temporary directory. To specify the property:- Under Windows, alter
<YourKit Java Profiler Home>\bin\win32\yjp.ini. - Under Linux, Solaris or Mac OS X, patch the command line in
yjp.sh.
- Under Windows, alter
- Windows installer: files with ".snapshot" extension are associated with the profiler
- Windows 64-bit: to achieve better performance and user experience, the profiler UI will automatically launch on a 64-bit JRE

