一个用于生成方法映射的 Java 代理,可与 Linux 的 `perf` 工具一起使用
一个 Java 代理程序,用于生成 /tmp/perf-.map 文件,用于与 Linux perf 工具 一起使用的即时(JIT)编译方法。
perf-map-agent 是一个用于为 Java 应用程序生成此映射文件的代理程序。它由一个用 C 编写的 Java 代理程序和一个小型 Java 引导程序组成,后者将代理程序附加到正在运行的 Java 进程中。
当代理程序被附加时,它会指示 JVM 在运行时为各种目的报告由 JVM 生成的代码块。最重要的一点是,这包括 JIT 编译的方法, 以及各种动态生成的基础结构部分, 如动态创建的解释器、适配器和虚拟调用的跳转表(参见 vtable 和 itable 条目)。代理程序会创建一个 /tmp/perf-<pid>.map 文件, 并为每个代码块添加一行, 将内存位置映射到代码块名称。
Java 应用程序以 Java 进程的 PID 作为参数,以及任意数量的附加参数,并将其传递给代理程序。然后,它连接到目标进程,并指示其加载代理程序库。
create-java-perf-map.sh <pid> <options*> 接收 PID 和选项。它知道如何在 bin 目录中找到库。 - perf-java-top <pid> <perf-top-options> 接收 PID 和用于传递给 perf top 的其他选项。使用代理创建新的 /tmp/perf-<pid>.map,然后调用 perf top。暂无开放 Issues,或尚未同步最近议题。