文章采集调用 经验:深入浅出JProfiler

优采云 发布时间: 2022-10-05 07:15

  文章采集调用 经验:深入浅出JProfiler

  文章来自阿里巴巴市技术协会(ATA)

  )。由于最近的工作,使用J轮廓器(

  8)做性能瓶颈分析,发现这个工具真的方便使用,现在整理了JProfiler的相关知识(谷歌查了一下,有没有我想要的)。

  什么是 J 轮廓器

  J轮廓器是由ej技术*敏*感*词*(也开发部署工具)开发的性能瓶颈分析工具。

  其特点:

  二。数据采集

  问题 1.由于JProfiler是一种性能瓶颈分析工具,因此此分析的相关数据来自哪里?

  问题 2.J普罗菲勒是如何采集和呈现这些数据的?

  (图2

  )。

  解答 1.分析的数据主要来自以下两个部分

  1. 部分分析接口来自 jvm(JVM 工具接口),JDK 必须>=1.6

  JVMTI 是一个基于事件的系统。分析代理库可以为不同的事件注册处理程序函数。然后,它可以启用或禁用选定的事件

  例如:生命周期

  对象、线程的生命周期等

  2. 部分来自仪器类(可以理解为类的重写,增加了JProfiler相关的统计

  )。

  例如:方法执行时间、次数、方法堆栈等

  解答 2.数据采集的原理如图2所示。

  1. 用户在 J 轮廓控制器 GUI 中发出监控指令(通常通过单击按钮

  )。

  2. J轮廓 GUI JVM 通过套接字(默认端口 8849)将指令发送到所分析的 JVM 中的 J 轮廓代理。

  3. JProfiler 代理(如果您不知道代理文章,请参阅第 3 部分 “启动模式”) 收到指令后,将指令转换为相关事件或要侦听的指令,将其注册到 JVMTI 或直接让 JVMTI 执行一个功能(例如转储 jvm 内存)。

  4. JVMTI 根据注册的事件采集有关当前 jvm 的信息。例如:线程的生命周期;JVM的生命周期;类的生命周期;对象实例的生命周期;有关堆内存等的实时信息

  5. J轮廓代理将采集信息保存到**内存**中,并根据一定的规则进行计数(如果J-Profiler GUI发送了所有数据,它将对分析的应用程序网络产生比较大的影响)。

  6. 返回 J 轮廓 GUI 套接字

  7. J轮廓GUI套接字将收到的信息返回给J轮廓GUI渲染

  8. J轮廓GUI渲染渲染到最终的显示效果

  数据采集模式和启动模式

  解答 1.JProfier 采集方法分为两种类型:采样(样本采集)和检测

  注意:JProfiler 本身并不指示采集数据类型,此处采集类型是方法调用的采集类型。由于 JProfiler 的大多数核心功能依赖于数据采集方法调用,因此可以直接将其视为 J 轮廓器的数据采集类型。

  A2:启动模式:

  4. J轮廓器核心概念

  筛选器:需要分析的类。有两种类型的筛选器:收录的和不收录的。

  (图4

  )。

  分析设置:收据采集策略:可以自定义采样和检测、某些数据采集详细信息

  (图5

  )。

  触发器:通常在离线模式下用于告诉 JProfiler 代理何时触发什么行为来采集指定信息

  (图6

  )。

  实时内存:有关类/类实例的信息。例如,对象数、大小、用于对象创建的方法执行堆栈、用于对象创建的热点。

  (图7

  )。

  堆步行者:功能强大,可用于静态分析在一定时间内采集的记忆图像信息。收录传出引用、传入引用、最大对象等对象

  (图8

  )。

  CPU视图:CPU消耗的分布和时间(CPU时间或运行时间);方法的执行图;方法的执行统计信息(最大值、最小值、平均运行时间等)

  

  )。

  (图9

  )。

  线程:jvm 中所有线程的当前运行状态、持有锁的线程的状态、可转储线程。

  (图10

  )。

  监视器和锁:所有线程持有锁的情况以及有关锁的信息

  (图 11

  )。

  遥测:收录堆、线程、gc、类等的趋势图(遥测视图)

  实践

  为了便于练习,请举一个 JProfiler8 附带的示例来帮助理解上述相关概念。

  JProfiler 附带了以下示例:模拟内存泄漏和线程阻塞场景:

  参考: /jprofiler install path/demo/bezier

  (图 12)。

  (图 13 泄漏内存模拟内存泄漏,模拟阻塞模拟线程间锁定。

  解答 1.首先,让我们分析一下内存泄漏场景:(检查图 13 中的泄漏内存模拟内存泄漏)。

  1. 在遥测>内存视图中,您将看到大致如下图所示的场景(在查看过程中可以每隔一段时间执行一次运行GC):请参阅下图的蓝色区域,gc(**槽**)之后老一代的内存大小正在缓慢增加(理想情况下,此值应稳定)。

  (图 14

  )。单击 **

  实时内存>记录对象“中的”记录分配数据**“按钮,用于开始计算在一段时间内创建的对象信息。执行Run GC一次后,查看当前对象信息的大小,然后单击工具栏中的“标记为当前”按钮(实际上,它是标记当前对象的数量。运行GC一次,然后继续观察;在继续观察之前运行一次GC。...最后,让我们看看在连续GC之后哪些物体的数量一直在上升。您最终看到的信息可能类似于下图

  (图15 绿色是标记前的数字,红色是标记后的增量

  )。

  分析您刚刚记录在堆步行器中的对象信息

  (图 16

  )。

  (图 17

  )。

  单击上图中具有最多实例的类,然后右键单击“使用所选实例>引用>传入引用”

  发现长数据最终存储在贝塞尔中。BeaierAnim.leakMap**.

  (图 18

  )。

  在“分配”选项卡中,右键单击其中一种方法以查看特定的源代码

  (图 19

  )。

  【注】:此时,问题很清楚,理解为什么图17中哪些实例的数量是一样的,以及为什么内存在fullgc之后仍然没有回收(一个旧区域的对象expleMap,放置信息也会进入旧区域,泄漏Map如果不能回收,那么映射中收录的对象就不能回收)。

  解答 2.模拟线程阻塞的场景(选中模拟阻塞以模拟线程间锁定阻塞,如图 13 所示

  )。

  为了更容易区分线程,我在演示测试中将贝塞尔*敏*感*词*的L236.java命名为线程。

  public void start() {

thread = new Thread(this, "test");

thread.setPriority(Thread.MIN_PRIORITY);

thread.start();

}

  

  通常,如下图所示

  (图 20

  )。

  在演示中选中“模拟阻塞”选项后,如下图所示(注意下图中的状态图标),测试线程块状态明显增加。

  (图 21

  )。

  在观察了监视器和锁>监视器历史记录一段时间后,发生了4种类型的锁。

  第一个:

  AWT 事件队列 0 线程在对象上保持锁定,并处于“正在等待”状态。

  图下面的代码表示演示块方法调用了对象.wait 方法。这仍然相对容易理解。

  (图 22

  )。

  第二种:

  AWT-事件队列-0 保持贝塞尔上的锁。贝塞尔*敏*感*词*演示实例,而测试线程等待该线程释放。

  请注意下图中的源代码,此锁定的原因是 AWT 和测试线程上的 Demo 的 blcok 方法

  将执行,并且方法已同步

  (图 23

  )。

  第三和第四种:

  测试线程不断将任务提交到事件事件调度线程,从而导致对 java.awt.事件队列对象锁定的竞争。

  提交任务的方式是以下代码:重绘() 和事件队列。

   public void run() {

Thread me = Thread.currentThread();

while (thread == me) {

repaint();

if (block) {

block(false);

}

try {

Thread.sleep(10);

} catch (Exception e) {

break;

}

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

onEDTMethod();

}

});

}

thread = null;

}

  (图24

  )。

  6. 最佳实践 JProfiler 会给出一些特殊操作的提示,因此最好仔细阅读说明。“标记当前”功能在某些情况下效果很好 堆步行器通常会静态分析实时内存>记录器对象中的对象信息,这些信息可能被 GC 回收,从而导致堆步行器中不显示任何内容。这种现象是正常的。您可以在“开始录制文件”工具栏中配置一次采集的信息 过滤器收录和排除是否按顺序排列,请注意下图**左下角** **显示过滤器树**以验证顺序

  (图25) 七.参考文献 J轮廓助手:

  捷运通:

  如果上述描述中存在错误或内乱,欢迎使用斧头。

  除此之外:J轮廓器被收费

  直观:TikTok易销宝 | TikTok小店如何上货?4种高效采集方式揭秘

  作为辐射全球的短视频应用,TikTok的发展速度惊人。数据显示,TikTok在全球拥有超过10亿的月活跃用户和超过30亿的下载量,成为全球第三大社交平台。

  同时,随着TikTok生态系统的不断发展和延伸,TikTok的变现模式也越来越多,其中TikTok Shop是目前最受欢迎的一种。

  TikTok Shop 是卖家在 TikTok 上推出的在线商店。卖家可以在店铺发布自己的产品,然后使用TikTok账号为小店吸引流量,从而直接实现用户在TikTok账号中的购物转化,缩短买家的购物时间。的链接。简单来说,TikTok Shop有国内抖音小店的详细清单。

  TikTok Shop开张后,卖家需要考虑的是如何快速给店铺加货,吸引流量。有经验的商家只要知道发货速度慢,线上产品不够多,产品不是不断变化,产品不丰富,就很难吸引流量,更谈不上流量的转化率。

  抖音卖家采集如何一键将商品卖到店铺?TikTok 一品宝介绍了 4 种快速 采集 和批量 采集 方法。

  抖音易销宝

  抖音全店采集

  

  进入shopee或lazada平台的店铺首页链接,点击【在线采集】按钮,即可采集将店铺的所有商品数据采集到一品宝ERP系统中,然后可以修改信息存储在 TikTok 商店上发布的产品。

  抖音全店采集

  抖音链接采集

  顾名思义就是进入单个sku的产品链接,定位采集卖家想要的产品

  抖音链接采集

  抖音易销宝

  

  TikTok关键词选择

  *敏*感*词*的TikTok卖家可以选择对应的站点,输入产品关键词选择产品采集,一品宝erp会自动抓取shopee/lazada的热销产品,并显示他们的标题、图片、价格、销量体积以及发货地等产品信息,为卖家选择产品和采集提供数据支持。

  抖音关键词选择

  TikTok最热门的选择

  TikTok卖家筛选网站、店铺类型(官方店铺、非官方店铺)、发货地点(国内、海外)、价格、产品排名后,可以发现深耕行业的热门产品,一键同步. 抖音平台。

  抖音爆款风格选择

  抖音易行宝专注抖音电商,涵盖店铺更换、店铺隔离、多店铺管理、运营看板、产品搬迁、批量采集、批量发布、自动邀请专家、智能采购、订单管理、仓库管理、智能客服、海外仓代理单板、专属客户成功服务等十余项功能,为抖音卖家提供一站式管理服务。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线