async-profiler list命令无法查看全部JVM性能分析事件如何处理
问题解答
为什么malloc事件没有出现在list命令的输出中
async-profiler 2.0的./profiler.sh list <pid>命令默认只会输出两类事件:内置的通用性能事件,以及当前操作系统支持的硬件性能计数器事件。malloc属于native函数追踪类事件,这类事件通过uprobes探针动态挂载实现,async-profiler理论上支持将目标进程加载的所有native库的导出函数作为采样事件,包括但不限于glibc的malloc、free,JVM内部原生函数等。由于这类可支持的事件数量完全由进程加载的库决定,没有固定的枚举范围,因此list命令不会将这类动态事件纳入输出列表。
如何查看特定JVM下async-profiler支持的所有事件
你可以分两类确认可用事件:
- 内置通用事件、系统支持的硬件性能计数器事件,直接执行
./profiler.sh list <目标Java进程PID>即可得到完整的可用列表,这部分输出是准确的 - 动态native函数类事件,只要目标进程的符号表中存在对应函数的导出符号即可使用,你可以通过短时间采样测试验证:设置采样时长为1秒执行采样命令,没有报错就说明该事件可用
内容的提问来源于stack exchange,提问作者tuk
相关产品推荐
相关产品推荐

