内存管理方法、装置、电子设备及计算机可读存储介质与流程

文档序号:26003932发布日期:2021-07-23 21:21阅读:来源:国知局

技术特征:

1.一种内存管理方法,其特征在于,所述方法包括:

将内存采集程序注入至正在运行的进程;

通过注入的所述内存采集程序采集所述进程对应的多个数据对象的占用内存;

确定所述数据对象在不同时刻的占用内存之间的占用内存差异;

根据所述多个数据对象分别对应的占用内存差异,在所述多个数据对象中确定存在内存泄漏的数据对象。

2.根据权利要求1所述的方法,其特征在于,所述进程对应的数据对象信息包括引用链表,所述引用链表包括存在引用关系的多个数据对象;

所述通过注入的所述内存采集程序采集所述进程对应的多个数据对象的占用内存,包括:

通过注入的所述内存采集程序执行以下处理:

根据所述引用链表的引用顺序对所述引用链表中的多个数据对象进行遍历处理,并采集遍历到的数据对象的占用内存。

3.根据权利要求2所述的方法,其特征在于,所述引用链表包括至少一个引用链;在根据所述引用链表的引用顺序对所述引用链表中的多个数据对象进行遍历处理的过程中,所述方法还包括:

当遍历到的数据对象所在的目标引用链引用结束时,停止对所述目标引用链进行遍历处理;

当所述遍历到的数据对象所在的所述目标引用链未引用结束时,根据所述目标引用链的引用顺序,对所述目标引用链中未遍历到的数据对象进行遍历处理。

4.根据权利要求2所述的方法,其特征在于,所述根据所述多个数据对象分别对应的占用内存差异,在所述多个数据对象中确定存在内存泄漏的数据对象之后,所述方法还包括:

对存在内存泄漏的数据对象进行内存释放处理;

在所述引用链表中屏蔽已进行内存释放处理的数据对象。

5.根据权利要求1所述的方法,其特征在于,所述通过注入的所述内存采集程序采集所述进程对应的多个数据对象的占用内存之前,所述方法还包括:

确定所述进程对应的进程标识;

根据所述进程标识确定所述进程对应的执行状态机的地址;其中,所述执行状态机用于管理所述进程对应的数据对象信息,所述数据对象信息包括多个数据对象;

根据所述进程标识及所述执行状态机的地址,确定所述数据对象信息的地址;

所述通过注入的所述内存采集程序采集所述进程对应的多个数据对象的占用内存,包括:

通过注入的所述内存采集程序调用所述数据对象信息的地址,以采集所述数据对象信息中的多个数据对象的占用内存。

6.根据权利要求1所述的方法,其特征在于,所述数据对象包括多种类型的数据;所述通过注入的所述内存采集程序采集所述进程对应的多个数据对象的占用内存,包括:

通过注入的所述内存采集程序执行以下处理:

针对所述进程对应的任意一个数据对象,采集所述任意一个数据对象包括的设定类型的数据的占用内存,以作为所述任意一个数据对象的占用内存;

其中,所述设定类型是所述多种类型中的至少一种。

7.根据权利要求1所述的方法,其特征在于,所述将内存采集程序注入至正在运行的进程,包括:

将所述内存采集程序对应的共享对象库加载至所述进程;

所述通过注入的所述内存采集程序采集所述进程对应的多个数据对象的占用内存之后,所述方法还包括:

在所述进程中卸载所述内存采集程序对应的共享对象库。

8.根据权利要求1至7任一项所述的方法,其特征在于,所述根据所述多个数据对象分别对应的占用内存差异,在所述多个数据对象中确定存在内存泄漏的数据对象,包括:

执行以下任意一种处理:

将占用内存差异满足内存泄漏条件的数据对象确定为存在内存泄漏的数据对象;

呈现所述多个数据对象以及所述多个数据对象分别对应的占用内存差异,并响应于针对所述多个数据对象的触发操作,将被触发的数据对象确定为存在内存泄漏的数据对象。

9.根据权利要求8所述的方法,其特征在于,所述呈现所述多个数据对象以及所述多个数据对象分别对应的占用内存差异,包括:

针对任意一个数据对象,执行以下处理:

根据所述任意一个数据对象引用的父数据对象的地址,确定所述任意一个数据对象所在的引用链;

将所述任意一个数据对象对应的查询索引与所述引用链中至少部分数据对象对应的查询索引进行融合处理,得到所述任意一个数据对象对应的融合查询索引;其中,所述至少部分数据对象区别于所述任意一个数据对象;

呈现所述任意一个数据对象对应的融合查询索引以及占用内存差异;

其中,所述任意一个数据对象引用的父数据对象的地址、以及所述任意一个数据对象对应的查询索引是通过注入的所述内存采集程序采集得到。

10.根据权利要求1至7任一项所述的方法,其特征在于,所述通过注入的所述内存采集程序采集所述进程对应的多个数据对象的占用内存之后,所述方法还包括:

针对任意一个数据对象,根据所述任意一个数据对象引用的父数据对象的地址,确定所述任意一个数据对象所在的引用链;其中,所述任意一个数据对象引用的父数据对象的地址是通过注入的所述内存采集程序采集得到;

根据所述引用链的引用顺序,以递进关系呈现所述引用链中的多个数据对象;其中,所述数据对象对应的呈现面积与占用内存正相关;所述递进关系包括包含关系以及并列关系中的任意一种。

11.根据权利要求1至7任一项所述的方法,其特征在于,所述进程用于运行虚拟场景;所述通过注入的所述内存采集程序采集所述进程对应的多个数据对象的占用内存,包括:

在所述虚拟场景的第一运行时刻和第二运行时刻,分别通过注入的所述内存采集程序采集所述进程对应的多个数据对象的占用内存;

所述确定所述数据对象在不同时刻的占用内存之间的占用内存差异,包括:

确定所述数据对象的第一占用内存与第二占用内存之间的占用内存差异;

其中,所述第一占用内存是在所述第一运行时刻采集到的占用内存;所述第二占用内存是在所述第二运行时刻采集到的占用内存。

12.根据权利要求11所述的方法,其特征在于,所述虚拟场景包括第一子场景和第二子场景;所述在所述虚拟场景的第一运行时刻和第二运行时刻,分别通过注入的所述内存采集程序采集所述进程对应的多个数据对象的占用内存,包括:

当检测到从所述第一子场景切换至所述第二子场景时,通过注入的所述内存采集程序采集所述进程对应的多个数据对象的占用内存,以作为在第一运行时刻采集到的占用内存;

当检测到从所述第二子场景切换至所述第一子场景时,通过注入的所述内存采集程序采集所述进程对应的多个数据对象的占用内存,以作为在第二运行时刻采集到的占用内存。

13.一种内存管理装置,其特征在于,所述装置包括:

注入模块,用于将内存采集程序注入至正在运行的进程;

采集模块,用于通过注入的所述内存采集程序采集所述进程对应的多个数据对象的占用内存;

差异确定模块,用于确定所述数据对象在不同时刻的占用内存之间的占用内存差异;

筛选模块,用于根据所述多个数据对象分别对应的占用内存差异,在所述多个数据对象中确定存在内存泄漏的数据对象。

14.一种电子设备,其特征在于,包括:

存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至12任一项所述的内存管理方法。

15.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时,实现权利要求1至12任一项所述的内存管理方法。


技术总结
本申请提供了一种内存管理方法、装置、电子设备及计算机可读存储介质;方法包括:将内存采集程序注入至正在运行的进程;通过注入的内存采集程序采集进程对应的多个数据对象的占用内存;确定数据对象在不同时刻的占用内存之间的占用内存差异;根据多个数据对象分别对应的占用内存差异,在多个数据对象中确定存在内存泄漏的数据对象,从而定位内存泄漏的问题根源。通过本申请,能够准确确定出存在内存泄漏的数据对象,提升内存管理的效果。

技术研发人员:庞雨生;梁本志;李建全
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2021.04.27
技术公布日:2021.07.23
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1