【JProfile】JProfile工具

一.背景

  本篇文章主要介绍JProfile工具的使用
  这里有几个问题先抛出来
      1.JProfile是什么?
  --是一个商业授权的Java剖析工具,由EJ技术有限公司,针对的Java EE和Java SE应用程序开发的
  2.JProfile具备哪些功能
  --2.1本地会话的实时分析(重要)
  --2.2远程会话的实时分析(重要)
  --2.3离线分析和触发器
  --2.4快照比较
  --2.5查看 HPROF 快照(重要)
  --2.6请求跟踪

二. 功能:

   这里根据用途描述以上重要的功能
  1. 查询HPROF快照
  这个功能作为Java开发应该是使用到的最多的功能之一,同类型的功能的产品如Eclipse MAT,都是作为分析线上OOM,内存泄漏等性能问题的重要能力之一
  首先打开heapdump文件

   可以看到当前内存快照中的对象占用分布
   常用的功能可以选定某个对象,查询传出引用(outgoing reference) 的对象和传入引用(incoming reference)对象

  

    也可以通过最大对象Tab查询到当前快照内大对象的情况

  2. 本地会话实时分析
  本地实时会话分析,这里以Attach模式功能为例

  JProfiler启动中心的快速Attach选项卡列出了所有可以被分析的JVM。 列表项的背景颜色指示了是否已经加载了分析代理,当前是否连接了JProfiler GUI,或者是否已经配置了离线分析。

  当你启动分析会话时,可以在会话设置对话框中配置分析设置。 当重复分析同一进程时,你不会希望重复输入相同的配置,所以当关闭用快速Attach功能创建的会话时,可以保存一个持久会话。
  你下次要分析该进程时,从打开会话选项卡启动保存的会话而不是快速Attach选项卡。你仍然必须选择一个正在运行的JVM,但分析设置与你之前已经配置的相同。

   这里可以看到主要有几个调用树记录的方式
   1. instrumentation :修改字节码的方式记录方法的调用,类似arthas? 
   2. 全采样:在JVM工具接口的帮助下,在安全点暂停时定期检查调用堆栈
   3. 异步采样:异步检查调用堆栈,仅在linux 和 macos系统上使用
      

  这里以第2种全采样的方式记录,主要有这样几个菜单需要关注
  遥测部分:这里可以记录当前Attach的JVM相关的概览信息,CPU,内存,GC等等
  堆遍历器:分析当前的堆内容内存占用
  实时内存:所有对象,记录的对象,分配调用树,分配热点,类跟踪器
  CPU视图:调用树,热点,调用图,异常值检测,复杂度分析,调用跟踪器等。这里主要关注调用树这个功能

      下面以CPU视图-调用树为例,分析方法调用耗时比较高的部分

   可以看到 /phoneRegisterLogin方法耗时390ms,一步一步打开调用路径,可以看到最终各个方法的调用耗时,也就是根据这些耗时点去针对应的做优化

 

   3. 远程会话实时分析

  //TODO 

 

三. 参考:

   1. JProfile官网:https://www.ej-technologies.com/products/jprofiler/features.html
   2. https://www.yisu.com/zixun/595083.html
   3. https://blog.51cto.com/u_15009384/2562935
   4. https://blog.csdn.net/fei33423/article/details/131089156
   5.https://www.ej-technologies.com/resources/jprofiler/help_zh_CN/doc/main/profiling.html

 
posted @ 2024-01-13 16:32  听风是雨  阅读(3316)  评论(0编辑  收藏  举报
/* 看板娘 */