当你对应用程序进行分析时,JProfiler 的视图中显示的方法和类通常会引发一些只有查看其源代码才能解答的问题。虽然 JProfiler 提供了内置的源代码查看器用于此目的,但其功能有限。此外,当发现问题时,下一步通常是编辑有问题的代码。理想情况下,JProfiler 的分析视图应能直接跳转到 IDE,这样你就可以无需手动查找,直接检查和优化代码。
安装 IDE 集成
JProfiler 为 IntelliJ IDEA、Eclipse 和 NetBeans 提供了 IDE 集成插件。要安装 IDE 插件,请在主菜单中选择 Session→IDE Integrations。IntelliJ IDEA 的插件通过 IDE 的插件管理器安装,其他 IDE 的插件则由 JProfiler 直接安装。安装程序同样提供此操作,方便你在安装 JProfiler 时一并更新 IDE 插件。集成向导会将插件与当前 JProfiler 安装目录关联。在 IDE 插件设置中,你可以随时更改所用的 JProfiler 版本。插件与 JProfiler GUI 之间的协议向后兼容,也可与旧版本的 JProfiler 协同工作。
IntelliJ IDEA 集成插件也可以通过插件管理器安装。在这种情况下,首次分析时插件会要求你指定 JProfiler 可执行文件的位置。
在不同平台上,JProfiler 可执行文件位于不同目录。Windows 下为
bin\jprofiler.exe,Linux 或 Unix 下为 bin/jprofiler,
而 macOS 下则在 JProfiler 应用包中有一个专门用于 IDE 集成的 shell 脚本
Contents/Resources/app/bin/macos/jprofiler.sh。
源代码导航
在 JProfiler 中,凡是显示类名或方法名的地方,右键菜单都包含一个 Show Source 操作。
如果会话不是从 IDE 启动的,则会显示内置源代码查看器, 它通过已编译类文件中的行号表查找方法。只有在应用设置中配置了源文件的根目录或包含该文件的 ZIP 文件时,才能找到源文件。
在显示源代码的同时,还会显示一个基于 jclasslib bytecode viewer 的字节码查看器,用于展示已编译类文件的结构。
如果会话是从 IDE 启动的,则不会使用集成的源代码查看器,Show Source 操作会交由 IDE 插件处理。IDE 集成支持启动分析会话、打开已保存的快照以及 attach 到正在运行的 JVM。
对于实时分析会话,你可以像运行或调试一样为 IDE 启动被分析应用。JProfiler 插件会自动插入分析所需的 VM 参数,并连接一个 JProfiler 窗口。JProfiler 作为独立进程运行,如有需要由插件启动。JProfiler 发起的源代码导航请求会发送到 IDE 中关联的项目。JProfiler 与 IDE 插件协作,实现窗口切换时任务栏无闪烁,体验如同操作单一进程。
启动会话时,“Session startup”对话框允许你配置所有分析设置。针对启动的会话,JProfiler 会按项目或运行配置(取决于 IDE 集成)记住所用的分析设置。首次分析会话时,IDE 插件会根据源文件包层级中的顶层类自动确定被分析包列表。之后你可以在会话设置对话框的过滤器设置步骤中,使用重置按钮重新计算包列表。
对于快照文件,可以在 IDE 内通过 File→Open 操作打开快照,或在项目窗口中双击快照文件来完成 IDE 集成。此后,JProfiler 的源代码导航会直接跳转到当前项目。最后,IDE 插件会在 IDE 中添加一个 Attach to JVM 操作,让你选择正在运行的 JVM 并将源代码导航集成到 IDE,机制与快照类似。
有时你可能希望切换到 IDE,但并未指定具体的类或方法。为此,JProfiler 窗口的工具栏会显示一个 Activate IDE 按钮(仅对由 IDE 集成打开的分析会话显示)。该操作绑定到
F11 键,与 IDE 中的 JProfiler 激活操作一致,因此你可以用同一个快捷键在 IDE 和 JProfiler 之间自由切换。
IntelliJ IDEA 集成
要在 IntelliJ IDEA 中分析你的应用程序,可在 Run 菜单中选择分析命令,或点击主工具栏中运行或调试操作旁的下拉菜单,选择“Profile with JProfiler”操作。JProfiler 能分析 IntelliJ IDEA 中大多数运行配置类型,包括应用服务器。
JProfiler 插件会为运行配置添加额外设置,这些设置默认不可见。要访问这些设置,请在“Modify options”下拉菜单中选择“Profile”选项。其他分析设置可在 JProfiler 窗口的启动对话框中配置。
分析会话启动后,输出会显示在独立的 JProfiler 工具窗口中。该工具窗口会像常规运行窗口一样显示控制台输出,并包含一个“JProfiler”标签页,在你与 JProfiler UI 连接后可使用:
当你在 IntelliJ IDEA 中打开 JProfiler 快照或通过“Attach to JVM with JProfiler”操作 attach 到正在运行的 JVM 时,也会显示 JProfiler 工具窗口。
“JProfiler”标签页包含用于启动和停止 CPU 数据、分配数据和探针事件数据记录的操作。此外,还提供切换到 JProfiler 窗口的操作。JProfiler 窗口也有类似的操作用于切换回 IDEA 窗口,方便你在两个独立窗口间协作。JProfiler 到 IntelliJ IDEA 的精确源代码导航支持 Java 和 Kotlin。
分析信息通常在 JProfiler 窗口中显示,但 CPU 图形数据也集成在 IntelliJ IDEA UI 中,因为直接在源代码中显示这些数据更为直观。你可以在 IntelliJ IDEA 中使用“Apply graph”操作,或在 JProfiler 中生成 CPU 图形,将 CPU 数据展示在 IDEA 的源代码中。若需配置高级参数(如线程选择),或使用调用树视图中的调用树根、调用树移除和调用树视图过滤器设置,建议在 JProfiler 窗口中生成图形。
应用 CPU 数据后,“JProfiler”标签页会显示已记录方法列表。双击方法可跳转到源代码。在源代码编辑器的边栏会显示来向和去向调用的箭头。
点击边栏图标会在弹窗中显示来向或去向方法,并附有记录时间的条形图。点击弹窗中的行可跳转到对应方法。
此外,弹窗底部会显示目标方法的总记录时间和调用次数。弹窗右下角的“Show in JProfiler”下拉菜单提供依赖上下文的导航操作,可跳转到 JProfiler UI。你可以显示所选节点或在方法图中查看对应的调用树分析。对于去向调用,提供“Cumulated outgoing calls”分析;对于来向调用,提供“Backtraces”分析。
同样的导航操作也可在“JProfiler”标签页的方法表右键菜单中使用:
JProfiler 插件为“Attach to JVM with JProfiler”操作提供了工具栏快捷按钮,你可以将其添加到主工具栏。通过该操作,你可以 attach 到已运行的进程,并从 JProfiler UI 获得源代码导航到 IntelliJ IDEA 以及在源代码编辑器中内联显示 CPU 图形数据:
添加后,操作按钮如下所示:
JProfiler 所有操作的快捷键都可以在 IntelliJ IDEA 的“Keymap”设置中自定义。由于可用且不冲突的快捷键有限,从源代码编辑器到 JProfiler UI 的导航操作采用组合快捷键,需先按
Ctrl-Alt-Shift-O,再按另一个键选择导航操作。如果你经常使用该功能,可以考虑分配更简单的快捷键。
在 IDE 设置的 Tools->JProfiler 页面,你可以调整所用的 JProfiler 可执行文件,以及是否每次新分析会话都在 JProfiler 中打开新窗口。
Eclipse 集成
Eclipse 插件可以分析大多数常见的启动配置类型,包括测试运行配置和 WTP 运行配置。Eclipse 插件仅适用于完整的 Eclipse SDK,不支持 Eclipse 框架的部分安装。
要在 Eclipse 中分析应用程序,可在 Run 菜单中选择分析命令,或点击相应的工具栏按钮。分析命令与 Eclipse 中的调试和运行命令等价,是 Eclipse 基础架构的一部分, 但 Run→Attach JProfiler to JVM 菜单项是由 JProfiler 插件添加的。
如果在 Java 透视图中没有 Run→Profile ... 菜单项, 请在 Window→Perspective→Customize Perspective 中, 切换到 Action Set Availability 标签页,并勾选 Profile 复选框以启用该操作。
包括 JProfiler 可执行文件位置在内的多个 JProfiler 相关设置可在 Eclipse 的 Window→Preferences→JProfiler 下调整。
VS Code 集成
VS Code 扩展增加了一个 Enable Profiling with JProfiler 操作。执行后,调试和运行操作将会为 Java 启动配置开启分析。JProfiler
会被启动,并弹出会话启动对话框,你可以在其中配置分析设置。确认会话启动对话框后,应用程序将被启动。
通过 Disable Profiling with JProfiler 操作,可以恢复运行和调试操作的默认行为。分析模式变更的通知会以 toast 消息的形式显示在 VS Code
编辑器右下角。
Enable Profiling with JProfiler 和 Disable Profiling with JProfiler
默认使用相同的快捷键,因此可以用来切换分析模式。
要分析已运行的 JVM,请使用 Attach to a Running JVM with JProfiler 操作。
在 JProfiler 中的源代码导航操作会在 VS Code 中显示对应的源代码。 若要在 VS Code 中为 JProfiler 快照启用源代码导航,请在 VS Code 内通过 File→Open 打开快照文件。
NetBeans 集成
在 NetBeans 中,你可以分析标准、自由格式和使用 exec Maven 插件的 Maven 项目。要在 NetBeans 中分析应用程序,可在 Run 菜单中选择分析命令,或点击相应的工具栏按钮。 对于以其他方式启动应用的 Maven 项目和 Gradle 项目,请正常启动项目,然后在菜单中使用 Profile→Attach JProfiler To A Running JVM 操作。
对于自由格式项目,需先调试一次应用程序,因为所需文件 nbproject/ide-targets.xml 会由调试操作生成。JProfiler
会向其中添加名为“profile-jprofiler”的目标,其内容与调试目标相同,并尝试按需修改 VM 参数。如果分析自由格式项目遇到问题,请检查该目标的实现。
你可以通过集成的 Tomcat 或在 NetBeans 中配置的其他 Tomcat 服务器分析 web 应用。当主项目为 web 项目时,选择 Profile main project with JProfiler 会以分析模式启动 Tomcat 服务器。
如果你在 NetBeans 中使用捆绑的 GlassFish Server,并将主项目设置为使用 GlassFish Server,选择 Profile main project with JProfiler 会以分析模式启动应用服务器。
JProfiler 可执行文件的位置以及新分析会话是否总是在新窗口中打开的策略,可在选项对话框的 Miscellaneous→JProfiler 下调整。

























