Releases: jvm-profiling-tools/ap-loader
Loader for 3.0 (v9): Binary launcher and AsyncGetCallTrace replacement
ap-loader v9
- Fix FlameGraph converter #22
The following is copied from the wrapped async-profiler release by Andrei Pangin. The source code linked below should be ignored.
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
Loader for 3.0 (v8): Binary launcher and AsyncGetCallTrace replacement
ap-loader v8
- Support for async-profiler 3.0
- Breaking changes with async-profiler 3.0:
- async-profiler 3.0 changed the meaning of the
--lib
option from--lib path full path to libasyncProfiler.so in the container
to-l, --lib prepend library names
, so theAsyncProfilerLoader
will throw an UnsupportedOperation exception
when using the--lib
option with a path argument and async-profiler 3.0 or higher
- async-profiler 3.0 changed the meaning of the
The following is copied from the wrapped async-profiler release by Andrei Pangin. The source code linked below should be ignored.
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
Loader for 2.9 (v8): Java Heap leak profiler
ap-loader v8
- Support for async-profiler 3.0
The following is copied from the wrapped async-profiler release by Andrei Pangin. The source code linked below should be ignored.
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
Loader for 2.9 (v7): Java Heap leak profiler
ap-loader v7
- Drop dev.dirs:directories dependency #13 (thanks to @jsjant for spotting the potential licensing issue and fixing it in #14)
The following is copied from the wrapped async-profiler release by Andrei Pangin. The source code linked below should be ignored.
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
Loader for 2.9 (v6): Java Heap leak profiler
ap-loader v6
- Fix Linux Arm64 release #12 (thanks to @dkrawiec-c for fixing this issue)
The following is copied from the wrapped async-profiler release by Andrei Pangin. The source code linked below should be ignored.
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
Loader for 2.9 (v5): Java Heap leak profiler
ap-loader v5
- Add new jattach methods (
AsyncProfilerLoader.jattach(Path agent, String args)
) to make using it programmatically easier - Add new
AsyncProfilerLoader.extractCustomLibraryFromResources(ClassLoader, String)
method to extract a custom library from the resources- this also has a variant that looks in an alternative resource directory if the resource does not exist
The following is copied from the wrapped async-profiler release by Andrei Pangin. The source code linked below should be ignored.
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
Loader for 1.8.8 (v4): Maintenance release
ap-loader v4
AsyncProfiler.isSupported()
now returnsfalse
if the OS is not supported by any async-profiler binary, fixes #5
The following is copied from the wrapped async-profiler release by Andrei Pangin. The source code linked below should be ignored.
v1.8.8
Bug fixes
- Could not find NativeLibrary_load on JDK 11.0.15
Loader for 1.8.7 (v4): Maintenance release
ap-loader v4
AsyncProfiler.isSupported()
now returnsfalse
if the OS is not supported by any async-profiler binary, fixes #5
The following is copied from the wrapped async-profiler release by Andrei Pangin. The source code linked below should be ignored.
v1.8.7
Bug fixes
- Workaround for JDK-8173361
- Backported fix for "Accept timed out" exception
Loader for 2.9 (v4): Java Heap leak profiler
ap-loader v4
AsyncProfiler.isSupported()
now returnsfalse
if the OS is not supported by any async-profiler binary, fixes #5
The following is copied from the wrapped async-profiler release by Andrei Pangin. The source code linked below should be ignored.
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
Loader for 2.8.3 (v3): Maintenance release
ap-loader v3
- Create specific artifacts for each platform fixing previous issues with maven version updates (issue #4, thanks @ginkel for reporting it)
The following is copied from the wrapped async-profiler release by Andrei Pangin. The source code linked below should be ignored.
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