文章采集调用 经验:深入浅出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卖家筛选网站、店铺类型(官方店铺、非官方店铺)、发货地点(国内、海外)、价格、产品排名后,可以发现深耕行业的热门产品,一键同步. 抖音平台。
抖音爆款风格选择
抖音易行宝专注抖音电商,涵盖店铺更换、店铺隔离、多店铺管理、运营看板、产品搬迁、批量采集、批量发布、自动邀请专家、智能采购、订单管理、仓库管理、智能客服、海外仓代理单板、专属客户成功服务等十余项功能,为抖音卖家提供一站式管理服务。