Небольшое исправление: в macOS nid
- это не pthread_t
, а скорее порт потока, полученный с помощью pthread_mach_thread_np(pthread_t)
.
В любом случае, в macOS нет эквивалента top -H
, к несчастью.Но он вам не нужен, если вы просто хотите найти занятый поток Java.Вместо этого используйте профилировщик Java.
Вот как это сделать с async-profiler
:
./profiler.sh -d 10 -t -f profile.svg PID
Это означает: профилировать процесс Java PID
за десятьсекунд (-d 10
) в поточном режиме (-t
) и сохраните вывод в виде графика пламени в profile.svg
.Вам даже не понадобится jstack
- профиль уже выделит самые горячие потоки с их трассировками стека Java.
КакВ качестве альтернативы Flame Graph вы можете выбрать «традиционный» вид дерева
, указав -f profile.html
вместо -f profile.svg
.