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

























