[发明专利]性能数据获取方法、装置、电子设备和介质有效
申请号: | 201911367621.2 | 申请日: | 2019-12-26 |
公开(公告)号: | CN113051122B | 公开(公告)日: | 2023-09-15 |
发明(设计)人: | 刘涛;李奇原;管灏;庞超 | 申请(专利权)人: | 百度在线网络技术(北京)有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 性能 数据 获取 方法 装置 电子设备 介质 | ||
1.一种性能数据获取方法,其特征在于,所述方法包括:
在检测到宿主程序启动完成后,向所述宿主程序对应的宿主进程发送加载指令;
在所述宿主进程基于所述加载指令加载用于对所述宿主程序进行性能监控的监控代码包后,通过运行加载的所述监控代码包中的监控代码,采集所述宿主程序的性能数据;
其中,所述监控代码包括插件代码段,所述插件代码段中包含用于确定各所述监控代码段在所述宿主程序的业务代码段中的加载位置的代码;
所述方法还包括:
在通过预先创建的类加载监听器,监听到所述监控代码中的监控类被加载到所述业务代码段中时,通过类转换器对所述监控类进行增强处理,以使所述监控类与所述业务代码段进行混合;
所述方法还包括:
在所述宿主进程扫描到预设文件中写入了预设卸载命令时,根据跳转代码段中的卸载逻辑,执行对所述增强处理的移除操作,关闭所述宿主进程中用于执行监控相关操作的线程,并在定时回收内存时,将跳转代码段中对插件代码段的引用回收掉。
2.根据权利要求1所述的方法,其特征在于,所述监控代码包包括监控代码段;其中,所述监控代码段中包含用于执行预设性能数据采集操作的监控代码;
相应的,加载用于对所述宿主程序进行性能监控的监控代码包,包括:
通过执行所述插件代码段确定所述加载位置,根据确定结果将所述监控代码段加载到所述业务代码段中的相应位置处。
3.根据权利要求2所述的方法,其特征在于,所述监控代码包还包括跳转代码段,其中,所述跳转代码段中包含至少一个接口以及各接口所引用的插件标识;以及,所述插件代码段还包含所述接口对应的功能实现代码;
相应的,通过运行加载的所述监控代码包中的监控代码,采集所述宿主程序的性能数据,包括:
执行所述监控代码中的接口调用语句,根据所述跳转代码段确定所述接口调用语句所调用接口所引用的插件标识,并通过调用所述插件标识对应的插件代码段中的功能实现代码,来执行所述预设性能数据采集操作。
4.根据权利要求3所述的方法,其特征在于,所述监控代码包还包括代理代码段,其中,所述代理代码段中包含各插件代码段共享的公共类,以使各插件代码段中的功能实现代码通过调用所述公共类来执行预设性能数据采集操作。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
将所述监控代码段、插件代码段、代理代码段和跳转代码段分别加载在不同的类加载容器中,并将不同的插件代码段加载在不同的类加载容器中;其中,所述类加载容器是用于运行和解释代码中类的容器。
6.根据权利要求1所述的方法,其特征在于,执行对所述增强处理的移除操作,包括:
将所述类加载监听器删除;
将通过类转换器已进行了增强处理的监控类中的植入代码删除;
将删除植入代码后的监控类重新加载到所述监控代码段所在的类加载容器中。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到热替换命令时,向所述宿主进程发送重新加载指令;
当所述宿主进程接收到所述重新加载指令后,确定是否已加载有监控代码包,若是,则将已加载的监控代码包卸载,并根据所述重新加载指令加载新的监控代码包;
否则,直接根据所述重新加载指令加载新的监控代码包。
8.根据权利要求7所述的方法,其特征在于,确定是否已加载有监控代码包,包括:
确定跳转代码段所在的类加载容器中是否存在已加载的跳转代码段;
若是,则确定已加载有监控代码包,否则,确定未加载有监控代码包。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百度在线网络技术(北京)有限公司,未经百度在线网络技术(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911367621.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种时钟门控模块的检测方法及装置
- 下一篇:电力参数检测装置及方法
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置