JProfiler的四种分析模式
JProfiler提供四种分析模式。其中三种需要与JProfiler GUI(图形用户界面)建立连接,可立即看见并分析数据。
这三种模式是便利性和效率权衡的结果。最简单的是直接将JProfiler GUI连接到正在运行的JVM(Attach mode附加模式)。但是,最有效率的是在启动时加载分析代理,并设置JProfiler配置参数(Profile at startup启动时分析)。
一种折衷的方式是在启动时加载分析代理,稍后再设置分析配置参数。称为“Prepare for profiling(准备分析)。
第四种模式是离线模式,用于不希望使用JProfiler GUI或技术上不能使用JProfiler GUI时。
附加模式
分析Java1.6+时,JProfiler可附加到正在运行的JVM,在运行中加载分析代理。
由于分析接口的一些功能不可用,所以附加模式有一些缺点。当使用这种模式时,JProfiler GUI将在界面上明确告知用户。同时,为了分析这些类,JProfiler需要对这些类进行再次转换,与“启动时分析”模式相比较,将消耗更多的时间和资源。
为能够与远程的一个未准备好分析的JVM相连接,JProfiler提供了命令行工具jpenable,该工具可加载分析代理,并使其可以与另一个机器上的远程会话建立连接。
启动时分析模式
为了能够在启动时分析某个应用,需要在创建JVM前就激活分析代理。对于JAVA >= 1.5.0(JVMTI),这可通过增加一个特殊的JVM参数实现:
-agentpath:[path to jprofilerti library]
不过,基本不需要手工增加该参数。对于已经启动的会话和IDE集成环境,JProfiler自动完成该工作,对于其他情况,可使用集成向导。同时也考虑到了所需要的其他VM参数。
分析代理在默认情况下监听端口8849.可以通过添加VM参数 =port=8849 改变端口,只有在远程会话时才需明确改变端口。
分析代理在启动时将暂停JVM,并等待GUI的连接,从该连接中获得有关所要分析的类和其他分析设置等信息。建立连接后,继续JVM的正常执行。由于不需要对加载的类文件进行再次转换,所以这是分析应用的最有效率的方式。
准备分析模式
也可以让应用立即启动,而稍后与JProfiler GUI建立连接。在这种情况下,需要在JProfiler GUI告诉分析代理哪些类需要分析之后,再一次转换所要分析的类。
通过在 –agentpath VM参数后添加 nowait 可激活该模式。大部分情况下,由向导处理。为了获得最大的性能,可以添加参数 config=[config file] 和 id=[id],告诉分析代理从一指定的配置文件中的指定会话获得分析的设置信息。如果用户使用相同的分析设置信息连接分析代理,就不必再次转换所要分析的类。
总之,由于不必再次作转换,因此这种模式比附加模式的效率要好很多。需要分析的类在加载时就已转换,再次转换的数量很少。同时,这种模式支持JVM分析接口的所有功能。
离线模式
对于自动分析或由于某种限制不能与JProfiler GUI连接时,可以在不使用GUI情况下进行分析。这时,用户需要告诉分析代理什么时候记录数据,记录什么数据以及什么时候保存快照。这是通过根据某些事件激活触发器实现的,可以执行一系列配置动作。
可通过在 -agentpath的VM参数后添加 ,offline,config=[config file],id=[id]激活这种模式。通常使用集成向导自动配置。与“准备分析”模式类似,在指定配置文件中所选的会话将用于分析设置。会话中配置的触发器将控制数据的记录和保存。
分析结果将保存在快照文件中,在“离线”模式下,不能与JProfiler GUI连接。不过,用户可以通过命令行 jpcontrooler手工控制数据的记录和快照的保存。如果JVM在启动时未配置为离线分析,用户可以使用jpenable命令行功能随时启用离线分析。