离线分析,JProfiler GUI无法与JProfiler Agent进行连接,因此需要将数据的采集方式、过滤器、触发器等信息打包成config.xml配置文件,在启动该JVM实例时加载JProfiler Agent以及配置文件,使用此模式需要配合triggers触发器使用,当发生指定的事件后触发指定的操作.
* 若使用此模式则需要让JVM在启动时自动加载JProfiler Agent和context.xml配置文件,因此需要在startup.bat/startup.sh文件中添加命令
startup.bat:set CATALINA_OPTS=-agentpath:{JProfiler安装目录}\bin\windows-x64\jprofilerti.dll=port=8849,nowait,config=C:\Users\{用户名}\.jprofiler9\config.xml %CATALINA_OPTS%
startup.sh:CATALINA_OPTS=-agentpath:/{JProfiler安装目录}/bin/linux-x64/libjprofilerti.so=port=8849,config={预定义目录}\config.xml $CATALINA_OPTS
export CATALINA_OPTS
步骤六:填写远程服务器的IP地址
步骤七:输入远程服务器中JProfiler的安装目录( 供JProfiler生成脚本时使用 )
步骤八:选择应用服务器的启动脚本,JProfiler会根据选择的启动脚本文件生成一份适用于JProfiler特定启动模式的脚本文件.
*最终在本地生成startup_jprofiler.sh文件,需将此文件复制到远程服务器中应用服务器的bin目录并对文件赋予执行的权限,在服务器中直接通过JProfiler提供的startup_jprofiler.sh文件来启动服务.
*若使用离线启动模式则还需要将JProfiler生成的context.xml配置文件复制到远程服务器中,然后修改startup_jprofiler.sh文件中JVM加载context.xml文件的路径.
步骤九:设置JProfiler GUI通讯的端口
步骤十:检查配置项
步骤十一:选择数据的采集方式
Instrumentation重构模式
JProfiler将对需要分析的class字节码文件中写入自己的bytecode,对于正在运行的JVM实例选择此模式将会重新加载字节码文件到JVM的运行时数据区域结构中.
*这是JProfiler全功能模式,在此设置中,调用堆栈信息是准确的,但是CPU开销可能很高( 取决于Filter的控制 ),若要分析的类较多,则对应用的性能产生影响,因此使用此模式一般配合Filter使用,只对特定的类或包进行分析.
Sampling抽样模式
此模式对CPU的开销非常低,但不支持某些功能( 方法的执行次数、执行时间等 ), 这种模式在连接正在运行的JVM实例时更为安全.
步骤十二:选择配置Filter和Trigger
配置Filter( 适用于Instrumentation数据采集模式 )
配置Trigger( 多用在离线的启动模式 )
1.选择触发器的类型
2.选择触发的动作
步骤十三:完成配置,连接JProfiler Agent,对程序进行监控.
*每个Session表示一次会话,Session可以通过人工创建 ( New Session ) 或者与服务应用进行集成来产生( Integration Wizards ).
*支持将当前JVM实例的运行状态保存为快照( Save Snapshot )并提供快照与快照之间的对比功能.
5.3 视图介绍Telemetries视图:包含JMM内存的使用情况( 全局堆与非堆、局部伊甸园区、幸存者区、老年代)、GC线程的活动情况( 发生GC的时间,是属于Minor GC还是Full GC )、当前JVM实例的线程概况、CPU的负载等信息.
Live Memory视图:展示当前堆中实例的个数、方法的调用链等信息.
方法调用链信息: