Changes in version 8.0 from 7.5:
- Memory Profiling
- CPU Profiling
- Telemetry
- J2EE Integration
- IDE Integration
- User Interface
- License
- Miscellaneous
Memory Profiling
- New feature: Snapshot index file. Accelerates snapshot opening, which makes the subsequent snapshot loadings much faster, as well as allows opening big snapshots on 32-bit workstations by using index file pre-created on powerful 64-bit machine.
-
New feature: Class loaders view. Shows objects grouped by class loader.
This view can help solving issues such as leaked loaders.
-
Improvement: In Class list, retained size estimation for each class is shown immediately on opening the view.
For most classes the estimation is very close to the exact value,
so there is almost no need to run exact size calculation.
- Improvement: Dominator tree view is now even more powerful for analysis of J2EE servers and other multithreaded applications. Objects retained via local variables are now treated as "referenced" from their thread, instead of being shown as top level GC roots of type [Stack Local] or [JNI Local]. This change affects retained size calculated for threads.
-
New feature:
Allocation telemetry.
Ability to profile object allocation without capturing a memory snapshot
by using "Memory | Allocations" tab.
-
New feature: Non-serializable objects referenced from serializable objects inspection.
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. - New feature: Option to transfer memory snapshot of remote application via compressed data stream. This option is useful if network connection is slow or network bandwidth is limited.
-
Improvement: Values of char[] are shown in explorers
-
Improvement: Thread name is shown for thread objects (i.e. instances of
java.lang.Threador subclasses) in reference explorers
-
Improvement: The quick search allows to search objects by thread name if an object is a thread
-
New feature: Quick info is also available as a slave view
(in addition to a popup window invoked with
Memory | Quick Info (Ctrl+Q))
-
New feature: Quick info shows a text representation of byte arrays (byte[])
in specified encoding
-
New feature:
Memory | Strings by Pattern... (Ctrl+F)action is now capable to search text in char arrays (char[]), as well as in byte arrays (byte[]) in specified encoding - Improvement: Class loaders are marked in object explorers with dedicated icon
- Improvement: For HPROF snapshots, thread names are available in Quick info
- Improvement: For HPROF snapshots, available system properties such as Java version, class path etc. are shown in the "Summary" tab
- Optimization: Snapshots are loaded faster
- Optimization: Up to 50% (32-bit) and up to 30% (64-bit) faster retained size calculation. 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)
-
Bug fixed: Text values of
java.lang.Stringmight be incorrectly shown
CPU Profiling
-
New feature: Callees list
- New feature: "Own time" column in call tree
- New feature: "Average time" column in call tree (available in CPU tracing snapshots)
- Bug fixed: Incorrect wall times under certain circumstances
Telemetry
-
New feature: Exception telemetry
-
New feature: Thread telemetry shows states of live threads. "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.
-
Improvement: Telemetry graphs are now scalable.
Choose desired time resolution with the help of a toolbar button
or invoke a popup menu on the graph:
-
Improvement: Thread stack and state telemetry can be enabled or disabled in runtime
- Improvement: 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
- New feature: "Generic server" option helps integrating with servers not explicitly supported by J2EE server integration wizard
- Improvement: J2EE server integration resolves many problematic cases of e.g. edited/modified scripts which prevented successful integration in previous versions
-
Improvement:
Ability to specify startup options
in J2EE server integration wizard.
Also, the following options are offered by default:
- "disablestacktelemetry" and "disableexceptiontelemetry" to ensure minimum profiling overhead
- "delay=10000" to prevent startup issues with some J2EE servers
- Improvement: J2EE server integration wizard correctly handles paths with spaces on Mac OS X
IDE Integration
User Interface
-
Improvement: Up-to-date list of locally running profiled applications is always available on the Welcome screen
- Improvement: Table column widths are chosen more accurately
-
New feature: Table column visibility is now configurable
- Improvement: Welcome screen is optimized to better fit low resolution displays
- Improvement: Thread native IDs are shown in all views where thread names are shown
- Improvement: If snapshot cannot be captured due to lack of free space on disk or other I/O error, user gets detailed error message describing the problem
- New feature: Option to show only positive or only negative differences in snapshot comparison views
-
Improvement: In "Summary" tab, paths and parameter lists are split by lines
-
New feature: Ability to open snapshots compressed with GZIP in "File | Open Snapshot..."
(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. -
Improvement: Snapshot full file path is shown in a tooltip "File | Open Snapshot..."
-
Improvement: On Welcome screen, tooltip in recent snapshot list shows snapshot full file path,
size and modification date
License
The following files are freely redistributable under BSD license:
yjpagent.dlllibyjpagent.solibyjpagent.jnilibyjp-controller-api-redist.jar
The license text can be found in the distribution bundle in file license-redist.txt.
Miscellaneous
-
New feature: FreeBSD 7 i386 and amd64 (aka x86_64) is now supported.
Diablo Caffe JDK 1.6.0-7 for i386 (32-bit JVM) and amd64 (64-bit JVM) is supported.
FreeBSD CPU profiling limitations: FreeBSD 7 does not provide means to obtain CPU time spent in certain thread, but only in entire process. 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.
- New feature: Command line tool to control profiling without using the profiler UI. In some cases it can be used instead of the profiler API.
-
New feature: "Export to HTML" results can be packed to a single ZIP archive
- New feature: yGuard bytecode obfuscator supported (see Automatic deobfuscation)
- New feature: ProGuard bytecode obfuscator supported (see Automatic deobfuscation)
- Improvement: RetroGuard's repackaged classes option supported
-
Improvement: Ability to alter the directory for temporary files created on opening a memory snapshot.
Specify
-Dyjp.alternate.temp.dir=<directory>property if there is not enough disk space in the user's default temporary directory in:-
Windows:
<Profiler Installation Directory>\bin\win32\yjp.ini -
Linux, Solaris, FreeBSD:
<Profiler Installation Directory>/bin/yjp.sh -
Mac OS X:
<Profiler Installation Directory>/Contents/Info.plist
-
Windows:
- Improvement: On Windows, files with ".snapshot" extension are associated with the profiler
- Improvement: On Windows 64-bit, to achieve better performance and user experience, the profiler UI will automatically launch on a 64-bit JRE
- Problem fixed: A memory snapshot capture could fail under some circumstances due to incorrect data provided by JRockit
- Problem fixed: IBM Java 6 SR3 might produce invalid memory snapshots

