Releases: async-profiler/async-profiler
Releases · async-profiler/async-profiler
Nightly builds
Async-profiler binaries published automatically from the latest sources in master
upon a successful build.
Binary launcher and AsyncGetCallTrace replacement
v3.0
Features
- #724: Binary launcher
asprof
- #751: Profile non-Java processes
- #795: AsyncGetCallTrace replacement
- #719: Classify execution samples into categories in JFR converter
- #855:
ctimer
mode for accurate profiling without perf_events - #740: Profile CPU + Wall clock together
- #736: Show targets of vtable/itable calls
- #777: Show JIT compilation task
- #644: RISC-V port
- #770: LoongArch64 port
Improvements
- #733: Make the same
libasyncProfiler
work with both glibc and musl - #734: Support raw PMU event descriptors
- #759: Configure alternative profiling signal
- #761: Parse dynamic linking structures
- #723:
--clock
option to select JFR timestamp source - #750:
--jfrsync
may specify a list of JFR events - #849: Parse concatenated multi-chunk JFRs
- #833: Time-to-safepoint JFR event
- #832: Normalize names of hidden classes / lambdas
- #864: Reduce size of HTML Flame Graph
- #783: Shutdown asprof gracefully on SIGTERM
- Better demangling of C++ and Rust symbols
- DWARF unwinding for ARM64
JfrReader
can parse in-memory buffer- Support custom events in
JfrReader
- An option to read JFR file by chunks
- Record
GCHeapSummary
events in JFR
Bug fixes
- Workaround macOS crashes in SafeFetch
- Fixed attach to OpenJ9 on macOS
- Support
UseCompressedObjectHeaders
aka Lilliput - Fixed allocation profiling on JDK 20.0.x
- Fixed context-switches profiling
- Prefer ObjectSampler to TLAB hooks for allocation profiling
- Improved accuracy of ObjectSampler in
--total
mode - Make Flame Graph status line and search results always visible
loop
andtimeout
options did not work in some modes- Restart interrupted poll/epoll_wait syscalls
- Fixed stack unwinding issues on ARM64
- Workaround for stale jmethodIDs
- Calculate ELF base address correctly
- Do not dump redundant threads in a JFR chunk
check
action prints result to a file- Annotate JFR unit types with
@ContentType
Binary launcher
v2.10 Draft Release 2.10
Java Heap leak profiler
v2.9
Features
- Java Heap leak profiler
meminfo
command to print profiler's memory usage- Profiler API with embedded agent as a Maven artifact
Improvements
--include
/--exclude
options in the FlameGraph converter--simple
and--dot
options in jfr2flame converter- An option for agressive recovery of
[unknown_Java]
stack traces - Do not truncate signatures in collapsed format
- Display inlined frames under a runtime stub
Bug fixes
- Profiler did not work with Homebrew JDK
- Fixed allocation profiling on Zing
- Various
jfrsync
fixes - Symbol parsing fixes
- Attaching to a container on Linux 3.x could fail
Maintenance release
v1.8.8
Bug fixes
- Could not find NativeLibrary_load on JDK 11.0.15
Maintenance release
v2.8.3
Improvements
- Support virtualized ARM64 macOS
- A switch to generate auxiliary events by async-profiler or FlightRecorder in jfrsync mode
Bug fixes
- Could not recreate perf_events after the first failure
- Handle different versions of Zing properly
- Do not call System.loadLibrary, when libasyncProfiler is preloaded
Maintenance release
v2.8.2
Bug fixes
- The same .so works with glibc and musl
- dlopen hook did not work on Arch Linux
- Fixed JDK 7 crash
- Fixed CPU profiling on Zing
Changes
- Mark interpreted frames with
_[0]
in collapsed output - Double click selects a method name on a flame graph
Bug fixes and JFR converter improvements
v2.8.1
Improvements
- JFR to pprof converter (contributed by @NeQuissimus)
- JFR converter improvements: time range, collapsed output, pattern highlighting
%n
pattern in file names; limit number of output files--lib
to customize profiler library path in a containerprofiler.sh list
command now works without PID
Bug fixes
- Fixed crashes related to continuous profiling
- Fixed Alpine/musl compatibility issues
- Fixed incomplete collapsed output due to weird locale settings
- Workaround for JDK-8185348
Distinguish interpreted/compiled frames
v2.8
Features
- Mark top methods as interpreted, compiled (C1/C2), or inlined
- JVM TI based allocation profiling for JDK 11+
- Embedded HTTP management server
Improvements
- Re-implemented stack recovery for better reliability
- Add
loglevel
argument - Do not mmap perf page in
--all-user
mode - Distinguish runnable/sleeping threads in OpenJ9 wall-clock profiler
--cpu
converter option to extract CPU profile from the wall-clock output
OpenJ9 support. DWARF unwinding
v2.7
Features
- Experimental support for OpenJ9 VM
- DWARF stack unwinding
Improvements
- Better handling of VM threads (fixed missing JIT threads)
- More reliable recovery from
not_walkable
AGCT failures - Do not accept unknown agent arguments