Skip to content

Releases: async-profiler/async-profiler

Binary launcher and AsyncGetCallTrace replacement

21 Jan 01:04
4e441b4
Compare
Choose a tag to compare

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

Binary launcher

25 Apr 06:49
bdceedd
Compare
Choose a tag to compare
Binary launcher Pre-release
Pre-release
v2.10

Draft Release 2.10

Java Heap leak profiler

26 Nov 23:15
32601bc
Compare
Choose a tag to compare

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

10 Sep 00:00
50fccae
Compare
Choose a tag to compare

v1.8.8

Bug fixes

  • Could not find NativeLibrary_load on JDK 11.0.15

Maintenance release

16 Jul 19:59
733cf7c
Compare
Choose a tag to compare

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

13 Jul 23:46
e2abcd2
Compare
Choose a tag to compare

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

08 Jun 13:20
fa98985
Compare
Choose a tag to compare

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 container
  • profiler.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

26 Apr 13:26
4a88ee4
Compare
Choose a tag to compare

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

13 Feb 23:28
b287816
Compare
Choose a tag to compare

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

Continuous profiling

10 Jan 00:31
ce91abe
Compare
Choose a tag to compare

v2.6

Features

  • Continuous profiling; loop and timeout options

Improvements

  • Reliability improvements: avoid certain crashes and deadlocks
  • Smaller and faster agent library
  • Minor jfr and jfrsync enhancements (see the commit log)