内存管理方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:25988534 阅读:21 留言:0更新日期:2020-10-20 18:56
本公开提供了一种内存管理方法、装置、计算机设备和存储介质,该方法包括:当确定应用不需要加载目标动态库时,获取动态库加载列表;从所述动态库加载列表中,获取所述目标动态库的动态库加载地址和程序头地址;所述动态库加载地址表示所述目标动态库的实际内存地址,所述程序头地址表示所述目标动态库的程序头信息的内存地址,所述程序头信息包括为所述应用预留的用于加载目标动态库的虚拟内存的内存地址相对所述动态库加载地址的偏移信息;基于所述动态库加载地址和程序头地址,确定为所述应用预留的用于加载所述目标动态库的虚拟内存的内存地址,并释放该内存地址对应的虚拟内存。本公开实施例能够提高虚拟内存的利用率。

【技术实现步骤摘要】
内存管理方法、装置、计算机设备和存储介质
本公开涉及通信处理
,具体而言,涉及一种内存管理方法、装置、计算机设备和存储介质。
技术介绍
运行有安卓系统的终端设备中运行有大量的应用,应用在运行过程中,需要加载系统的动态库(如网页视图动态库),那么,在应用启动时需要为应用预留一定大小的虚拟内存,该虚拟内存仅供应用加载该系统的动态库,其它应用无法使用该部分虚拟内存。由于应用在运行过程中,可能会采用开发人员研发的针对该应用的动态库,也可能不需要调用系统的动态库,此时会造成预留的虚拟内存的浪费,也会降低预留虚拟内存的利用率。
技术实现思路
本公开实施例至少提供一种内存管理方法、装置、计算机设备和存储介质,提高虚拟内存的利用率。第一方面,本公开实施例提供了一种内存管理方法,该方法包括:当确定应用不需要加载目标动态库时,获取动态库加载列表;从所述动态库加载列表中,获取所述目标动态库的动态库加载地址和程序头地址;所述动态库加载地址表示所述目标动态库的实际内存地址,所述程序头地址表示所述目标动态库的程序头信息的内存地址,所述程序头信息包括为所述应用预留的用于加载目标动态库的虚拟内存的内存地址相对所述动态库加载地址的偏移信息;基于所述动态库加载地址和程序头地址,确定为所述应用预留的用于加载所述目标动态库的虚拟内存的内存地址,并释放该内存地址对应的虚拟内存。在一种实施方式中,从所述动态库加载列表中,获取所述目标动态库的动态库加载地址和程序头地址,包括:从所述动态库加载列表中查找包含所述目标动态库的库标识的动态库加载路径,作为目标动态库加载路径;在所述动态库加载列表中获取所述目标动态库加载路径对应的动态库加载地址和程序头地址。在一种实施方式中,所述方法还包括:读取所述应用中的配置文件中的动态库加载参数值;根据所述动态库加载参数值,确定所述应用是否需要加载目标动态库。在一种实施方式中,基于所述动态库加载地址和程序头地址,确定为所述应用预留的用于加载所述目标动态库的虚拟内存的内存地址,包括:基于所述程序头地址,查找到所述目标动态库的程序头信息;从所述程序头信息中提取偏移地址,以及第一目标数据段的长度;基于所述偏移地址、所述第一目标数据段的长度、以及所述动态库加载地址,确定所述第二目标数据段的实际起始地址和实际结束地址;所述第一目标数据段中包含所述第二目标数据段中的数据;基于所述第二目标数据段的实际起始地址和实际结束地址,从所述第二目标数据段中,确定为所述应用预留的用于加载所述目标动态库的虚拟内存的内存地址。在一种实施方式中,基于所述偏移地址、所述第一目标数据段的长度、以及所述动态库加载地址,确定所述第二目标数据段的实际起始地址和实际结束地址,包括:基于所述偏移地址和所述第一目标数据段的长度,确定所述第一目标数据段的结束偏移地址;基于所述第一目标数据段的结束偏移地址,和第二目标数据段的预设长度,确定所述第二目标数据段的起始偏移地址;基于所述动态库加载地址,以及所述第二目标数据段的起始偏移地址和所述第一目标数据段的结束偏移地址,确定所述第二目标数据段的实际起始地址和实际结束地址。在一种实施方式中,所述释放该内存地址对应的虚拟内存,包括:在所述应用对应的内存映射表中,查找所述内存地址;若查找到所述内存地址,则释放该内存地址对应的虚拟内存。第二方面,本申请实施例提供了一种内存管理装置,该装置包括:第一获取模块,用于当确定应用不需要加载目标动态库时,获取动态库加载列表;第二获取模块,用于从所述动态库加载列表中,获取所述目标动态库的动态库加载地址和程序头地址;所述动态库加载地址表示所述目标动态库的实际内存地址,所述程序头地址表示所述目标动态库的程序头信息的内存地址,所述程序头信息包括为所述应用预留的用于加载目标动态库的虚拟内存的内存地址相对所述动态库加载地址的偏移信息;处理模块,用于基于所述动态库加载地址和程序头地址,确定为所述应用预留的用于加载所述目标动态库的虚拟内存的内存地址,并释放该内存地址对应的虚拟内存。在一种实施方式中,所述第二获取模块用于根据以下步骤获取所述目标动态库的动态库加载地址和程序头地址:从所述动态库加载列表中查找包含所述目标动态库的库标识的动态库加载路径,作为目标动态库加载路径;在所述动态库加载列表中获取所述目标动态库加载路径对应的动态库加载地址和程序头地址。第三方面,本公开实施例提供了一种计算机设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行第一方面任一所述方法的步骤。第四方面,本公开实施例提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面任一所述方法的步骤。本公开实施例提供了一种内存管理方法,当确定应用不需要加载目标动态库时,获取动态库加载列表,从动态库加载列表中,获取目标动态库的动态库加载地址和程序头地址,基于动态库加载地址和程序头地址,确定为应用预留的用于加载所述目标动态库的虚拟内存地址,并释放该虚拟内存地址对应的虚拟内存,这样,释放为不需要加载目标动态库的应用预留的虚拟内存,便于其它应用或进程使用该虚拟内存,提高了虚拟内存的利用率。为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1示出了本公开实施例所提供的一种内存管理方法的流程示意图;图2示出了本公开实施例所提供的一种内存管理装置的结构示意图;图3示出了本公开实施例所提供的一种计算机设备的示意图。具体实施方式为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。<本文档来自技高网...

【技术保护点】
1.一种内存管理方法,其特征在于,该方法包括:/n当确定应用不需要加载目标动态库时,获取动态库加载列表;/n从所述动态库加载列表中,获取所述目标动态库的动态库加载地址和程序头地址;所述动态库加载地址表示所述目标动态库的实际内存地址,所述程序头地址表示所述目标动态库的程序头信息的内存地址,所述程序头信息包括为所述应用预留的用于加载目标动态库的虚拟内存的内存地址相对所述动态库加载地址的偏移信息;/n基于所述动态库加载地址和程序头地址,确定为所述应用预留的用于加载所述目标动态库的虚拟内存的内存地址,并释放该内存地址对应的虚拟内存。/n

【技术特征摘要】
1.一种内存管理方法,其特征在于,该方法包括:
当确定应用不需要加载目标动态库时,获取动态库加载列表;
从所述动态库加载列表中,获取所述目标动态库的动态库加载地址和程序头地址;所述动态库加载地址表示所述目标动态库的实际内存地址,所述程序头地址表示所述目标动态库的程序头信息的内存地址,所述程序头信息包括为所述应用预留的用于加载目标动态库的虚拟内存的内存地址相对所述动态库加载地址的偏移信息;
基于所述动态库加载地址和程序头地址,确定为所述应用预留的用于加载所述目标动态库的虚拟内存的内存地址,并释放该内存地址对应的虚拟内存。


2.如权利要求1所述的方法,其特征在于,从所述动态库加载列表中,获取所述目标动态库的动态库加载地址和程序头地址,包括:
从所述动态库加载列表中查找包含所述目标动态库的库标识的动态库加载路径,作为目标动态库加载路径;
在所述动态库加载列表中获取所述目标动态库加载路径对应的动态库加载地址和程序头地址。


3.如权利要求1所述的方法,其特征在于,所述方法还包括:
读取所述应用中的配置文件中的动态库加载参数值;
根据所述动态库加载参数值,确定所述应用是否需要加载目标动态库。


4.如权利要求1所述的方法,其特征在于,基于所述动态库加载地址和程序头地址,确定为所述应用预留的用于加载所述目标动态库的虚拟内存的内存地址,包括:
基于所述程序头地址,查找到所述目标动态库的程序头信息;
从所述程序头信息中提取偏移地址,以及第一目标数据段的长度;
基于所述偏移地址、所述第一目标数据段的长度、以及所述动态库加载地址,确定所述第二目标数据段的实际起始地址和实际结束地址;所述第一目标数据段中包含所述第二目标数据段中的数据;
基于所述第二目标数据段的实际起始地址和实际结束地址,从所述第二目标数据段中,确定为所述应用预留的用于加载所述目标动态库的虚拟内存的内存地址。


5.如权利要求4所述的方法,其特征在于,基于所述偏移地址、所述第一目标数据段的长度、以及所述动态库加载地址,确定所述第二目标数据段的实际起始地址和实际结束地址,包括:
基于所述偏移地址和所述第一目标数据...

【专利技术属性】
技术研发人员:朴英敏
申请(专利权)人:北京字节跳动网络技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1