- Pause/resume profiling
- Allocation profiling support for JDK 12, 13 (contributed by @rraptorr)
- Include all AsyncGetCallTrace failures in the profile
- Parse symbols of JNI libraries loaded in runtime
- The agent autodetects output format by the file extension
- Output file name patterns:
%p
and%t
-g
option to print method signatures-j
can increase the maximum Java stack depth- Allocaton sampling rate can be adjusted with
-i
- Improved reliability on macOS
-f
file names are now relative to the current shell directory
- Wall-clock profiler:
-e wall
-e itimer
mode for systems that do not support perf_events- Native stack traces on macOS
- Support for Zing runtime, except allocation profiling
--all-user
option to allow profiling with restrictedperf_event_paranoid
(contributed by @jpbempel)-a
option to annotate method names- Improved attach to containerized and chroot'ed JVMs
- Native function profiling now accepts non-public symbols
- Better mapping of Java thread names (contributed by @KirillTim)
- Changed default profiling engine on macOS
- Fixed the order of stack frames in JFR format
- Interactive Call tree and Backtrace tree in HTML format (contributed by @rpulle)
- Experimental support for Java Flight Recorder (JFR) compatible output
- Added units:
ms
,us
,s
and multipliers:K
,M
,G
for interval argument - API and command-line option
-v
for profiler version - Allow profiling containerized JVMs on older kernels
- Default CPU sampling interval reduced to 10 ms
- Changed the text format of flat profile
- Profiling of native functions, e.g. malloc
- JDK 9, 10, 11 support for heap profiling with accurate stack traces
root
can now profile Java processes of any user-j
option for limiting Java stack depth
- Produce SVG files out of the box; flamegraph.pl is no longer needed
- Profile ReentrantLock contention
- Java API
- Allocation and Lock profiler now works on JDK 7, too
- Faster dumping of results
total
counter of allocation profiler now measures heap pressure (like JMC)
- Linux Perf Events profiling: CPU cycles, cache misses, branch misses, page faults, context switches etc.
- Kernel tracepoints support
- Contended monitor (aka intrinsic lock) profiling
- Individual thread profiles
- Profiler can engage at JVM start and automatically dump results on exit
list
command-line option to list supported events- Automatically find target process ID with
jps
tool - An option to include counter value in
collapsed
output - Friendly class names in allocation profile
- Split allocations in new TLAB vs. outside TLAB
- Replaced
-m
modes with-e
events - Interval changed from
int
tolong
- CPU profiler without Safepoint bias
- Lightweight Allocation profiler
- Java, native and kernel stack traces
- FlameGraph compatible output