本申请实施例涉及计算机领域,具体涉及一种信息记录方法、装置、电子设备及计算机可读存储介质。
背景技术:
1、目前,安卓系统java内存监控已经有比较成熟的工具,如eclipse mat工具,android studio profiler工具,通过这些工具可以获取程序运行时的信息(hprof快照),很方便分析java代码引起的内存问题。
2、而c、c++开发的原生(native)程序只有原生malloc debug工具,但是mallocdebug存在性能和稳定性问题,还存在兼容性问题,当出现native内存泄漏问题时候,无法快速定位发生native泄漏的代码。
3、目前,有采用钩子函数的方式进行内存分配信息的记录,但是,钩子函数通常是针对应用的,即需要为每个应用单独配置钩子函数,导致记录内存分配的复杂度较高。
技术实现思路
1、本申请实施例提供一种信息记录方法、装置、电子设备及计算机可读存储介质,可以降低内存分配信息记录的复杂度,有助于实现内存问题的定位。
2、本申请实施例提供了一种信息记录方法,该方法包括:
3、响应于目标应用的启动操作,加载所述目标应用对应的目标库文件,所述目标库文件中包含有替换了原始配置函数的目标配置函数;
4、执行所述目标配置函数,配置得到分配对象数组;
5、响应于针对所述目标应用的内存分配操作,得到分配的目标内存的内存分配信息;
6、将所述内存分配信息记录在所述分配对象数组。
7、相应的,本申请实施例还提供了一种信息记录装置,该装置包括:
8、加载模块,用于响应于目标应用的启动操作,加载所述目标应用对应的目标库文件,所述目标库文件中包含有替换了原始配置函数的目标配置函数;
9、配置模块,用于执行所述目标配置函数,配置得到分配对象数组;
10、获取模块,用于响应于针对所述目标应用的内存分配操作,得到分配的目标内存的内存分配信息;
11、记录模块,用于将所述内存分配信息记录在所述分配对象数组。
12、可选的,在本申请的一些实施例中,该装置还包括过滤模块,过滤模块包括:
13、配置单元,用于调用所述目标配置函数,配置得到内存记录阈值;
14、记录模块包括:
15、第一记录单元,用于若所述内存分配信息表征的内存容量超过所述内存记录阈值,则将所述内存分配信息记录在所述分配对象数组。
16、其中,在本申请的一些实施例中,目标库文件中还包括有替换了原始记录函数的目标记录函数,获取模块包括:
17、获取单元,用于响应于针对所述目标应用的内存分配操作,通过所述目标记录函数获取分配的所述目标内存的内存分配信息;
18、记录模块包括:
19、第二记录单元,用于通过所述目标记录函数将所述内存分配信息存入到所述分配对象数组。
20、其中,在本申请的一些实施例中,目标库文件包括原始库文件和子库文件,加载模块包括:
21、第一加载单元,用于响应于所述目标应用的启动操作,加载所述目标应用对应的所述原始库文件,所述原始库文件中配置有原始配置函数;
22、第二加载单元,用于基于所述原始库文件的加载,加载针对所述目标应用的预先配置的所述子库文件,其中,所述子库文件中配置有目标配置函数,所述目标配置函数是对所述原始配置函数的重写。
23、其中,在本申请的一些实施例中,记录模块包括:
24、提取单元,用于从所述内存分配信息中提取出虚拟内存地址信息;
25、生成单元,用于生成所述虚拟内存地址信息对应的哈希值;
26、第三记录单元,用于将所述内存分配信息记录在所述分配对象数组,并将所述哈希值设置为所述内存分配信息的索引。
27、其中,在本申请的一些实施例中,该装置还包括信号设置模块和结束记录模块,信号设置模块包括:
28、信号设置单元,用于根据所述目标配置函数设置记录结束信号;
29、结束记录模块包括:
30、结束记录单元:用于向目标线程发送所述记录结束信号,以指示结束对所述内存分配信息的记录。
31、其中,在本申请的一些实施例中,该装置还包括展示模块,展示模块包括:
32、保存单元,用于遍历所述分配对象数组,将所述分配对象数组中的内存分配信息保存至目标记录文件;
33、展示单元,用于响应于针对所述目标记录文件的预览操作,基于所述内存分配信息表征的内存容量对各所述内存分配信息进行排序显示。
34、第三方面,本申请实施例还提供了一种电子设备,电子设备包括存储器、处理器及存储在存储器中并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现上述的信息记录方法中的步骤。
35、第四方面,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的信息记录方法中的步骤。
36、第五方面,本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例所述的各种可选实现方式中提供的方法。
37、综上,本申请实施例响应于目标应用的启动操作,加载该目标应用对应的目标库文件,该目标库文件中包含有替换了原始配置函数的目标配置函数,执行该目标配置函数,配置得到分配对象数组,响应于针对该目标应用的内存分配操作,得到分配的目标内存的内存分配信息,并将该内存分配信息记录在分配对象数组。
38、其中,通过直接利用目标配置函数替换库文件中的原始配置函数,使得应用在进行内存分配时,可以直接利用库文件中配置好的目标配置函数进行内存分配信息的记录,相较于相关技术中基于应用的钩子函数进行内存分配信息记录的方式,本申请实施例降低了内存分配信息记录的复杂度。
39、其中,该库文件以及该库文件中的目标配置函数是适用于多个应用的,因此,无需单独为多个应用分别配置钩子函数,降低了内存分配信息记录的复杂度。
40、其中,通过在内存分配操作前预先进行分配对象数组的建立,避免在内存分配过程中临时创建分配对象数组导致的卡顿、性能以及效率问题。
1.一种信息记录方法,其特征在于,所述方法包括:
2.根据权利要求1所述的信息记录方法,其特征在于,所述响应于针对所述目标应用的内存分配操作,得到分配的目标内存的内存分配信息之前,所述方法还包括:
3.根据权利要求1所述的信息记录方法,其特征在于,所述目标库文件中还包括有替换了原始记录函数的目标记录函数;
4.根据权利要求1所述的信息记录方法,其特征在于,所述目标库文件包括原始库文件和子库文件,所述响应于目标应用的启动操作,加载所述目标应用对应的目标库文件,包括:
5.根据权利要求1所述的信息记录方法,其特征在于,所述将所述内存分配信息记录在所述分配对象数组,包括:
6.根据权利要求1所述的信息记录方法,其特征在于,所述将所述内存分配信息记录在所述分配对象数组之前,所述方法还包括:
7.根据权利要求1所述的信息记录方法,其特征在于,所述将所述内存分配信息记录在所述分配对象数组之后,所述方法还包括:
8.一种信息记录装置,其特征在于,该装置包括:
9.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7任一项所述的信息记录方法中的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的信息记录方法中的步骤。