Skip to content

Releases: jvm-profiling-tools/ap-loader

Loader for 3.0 (v9): Binary launcher and AsyncGetCallTrace replacement

12 Mar 11:09
Compare
Choose a tag to compare

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 and timeout 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

22 Jan 18:22
Compare
Choose a tag to compare

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 the AsyncProfilerLoader will throw an UnsupportedOperation exception
      when using the --lib option with a path argument and async-profiler 3.0 or higher

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 and timeout 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

22 Jan 18:19
Compare
Choose a tag to compare

ap-loader v8

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

23 Jun 12:02
Compare
Choose a tag to compare

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

19 May 07:15
Compare
Choose a tag to compare

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

28 Apr 13:19
Compare
Choose a tag to compare

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

20 Mar 10:33
Compare
Choose a tag to compare

ap-loader v4

  • AsyncProfiler.isSupported() now returns false 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

20 Mar 10:27
Compare
Choose a tag to compare

ap-loader v4

  • AsyncProfiler.isSupported() now returns false 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

03 Feb 10:18
Compare
Choose a tag to compare

ap-loader v4

  • AsyncProfiler.isSupported() now returns false 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

19 Jan 09:28
Compare
Choose a tag to compare

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