out.write(...)are aggregated, which simplifies the result interpretation as well as slightly reduces profiling overhead and memory footprint. To revert back to the old behavior please specify the startup option
"Duplicate objects" inspection detects duplicates of higher order. It now performs multiple passes to identify objects referencing different instances with the same value, recursively. For example, it can detect if the same XML document is parsed and kept in memory multiple times.
Also, the estimated memory waste is now calculated from the duplicate objects' retained size. This puts the biggest higher level duplicates, like lists or maps, to the top of the list.
Added handling of
This class introduced in Java 7 allows to associate a computed value with a class.
For Java 7 and Java 8,
the maps are shown referenced from corresponding
java.lang.Class instances via
an instance field reference
In latest Java 9 there is unfortunately no means to identify which particular class each map belongs to,
and we instead show the maps as being GC roots of type "Held by JVM".
This feature works with HPROF format snapshots only. JVM's JVMTI API used to create the profiler format snapshot files does not provide enough information to let the feature work.
<constant pool>entries are not shown for the references that are also accessible from static fields of the same class
java.lang.Threadand subclasses): in addition to the thread name, also shown are tid, status and whether the thread is daemon
java.nio.Bufferthe buffer capacity is immediately shown
java.nio.DirectByteBufferR). Note that other kinds of direct buffers, like
java.nio.DirectLongBuffer, delegate to underlying ("attached") byte buffers and thus do not allocate native memory directly.
java.lang.TypeNotPresentExceptionwhen opening particular snapshot
Bug fixed: JBoss might not start from within an IDE due to an improper initialization sequence of its custom MBeans.
Previously, until this fix was made, it was required to specify
as a workaround.
@HotSpotIntrinsicCandidateare not instrumented by default (and thus are not visible in CPU tracing or probes should any be applicable), to avoid profiling overhead and get rid of JVM warnings like "Method [java.lang.reflect.Array.getLength(Ljava/lang/Object;)I] is annotated with @HotSpotIntrinsicCandidate but no compiler intrinsic is defined for the method." To instrument such methods please specify the agent startup option "_with_intrinsic_candidates".
C:\Program Files, instead of the 32-bit program directory, e.g.
C:\Program Files (x86).
ui.iniwas moved from the profiler installation directory to the user home, now being
<user home>/.yjp/ui.ini, to make changes in this file persistent after upgrading to a newer build and simplify editing in when the profiler directory requires root access to modify files.