一种内存管理方法及装置的制造方法_4

文档序号:9235348阅读:来源:国知局
间建立一一对应关系,例如:应用模块用户组O与内存管理链表O对应,应用模块用户组I与内存管理链表I对应,依次类推,应用模块用户组9与内存管理链表9对应。
[0061]以应用模块用户54为例,通过如下方式确定还存在应用模块用户54对应的内存块被该应用模块用户占用的记录信息:应用模块用户标识为54,确定该应用模块用户所在的应用模块用户组为应用模块用户组5,应用模块用户组5对应的内存管理链表为内存管理链表5,当确定内存管理链表5的忙链表中存在应用模块用户54与内存块属性信息之间的对应关系时,确定还存在应用模块用户54对应的内存块被应用模块用户54占用的记录信息,不需要在10个内存管理链表中逐个确定,可以直接在内存管理链表5中确定应用模块用户标识与内存块属性信息之间的对应关系,缩小内存泄露的检测范围,提高内存泄露的检测效率。
[0062]本发明实施例提供的一种内存管理装置,如图3所示,包括:内存分配单元302,用于当接收到应用模块用户申请内存的请求消息时,根据该请求消息为应用模块用户分配一个内存块,并且建立该内存块被该应用模块用户占用的记录信息;内存释放单元304,连接至内存分配单元302,用于当确定需要释放为应用模块用户分配的任一内存块时,释放该内存块,并且删除该内存块被该应用模块用户占用的记录信息;处理单元306,连接至内存分配单元302和内存释放单元304,用于当需要释放应用模块用户时,若确定还存在该应用模块用户对应的内存块被该应用模块用户占用的记录信息,则释放该记录信息中记录的被该应用模块用户占用的内存块,并且删除该内存块被该应用模块用户占用的记录信息。
[0063]本发明实施例提供的装置中,接收到应用模块用户申请内存的请求消息时,根据该请求消息为应用模块用户分配一个内存块,建立该内存块被该应用模块用户占用的记录信息,当确定需要释放该内存块时,释放该内存块,并且删除该内存块被该应用模块用户占用的记录信息,则当需要释放应用模块用户时,若确定还存在该应用模块用户对应的内存块被该应用模块用户占用的记录信息,则确定该应用模块用户对应的内存块未能完全释放,发生内存泄露,则释放该记录信息中记录的被该应用模块用户占用的内存块,恢复泄露的内存,与现有技术中由于程序错误或其它原因导致应用模块用户的某些业务申请的内存块未能释放而引起内存泄露,进而导致单板故障、业务异常相比,当需要释放应用模块用户时,若确定还存在该应用模块用户对应的内存块被该应用模块用户占用的记录信息,则释放该记录信息中记录的被该应用模块用户占用的内存块,也即检测到内存泄露时,及时释放泄露的内存,避免由于内存泄露导致单板故障、业务异常,而且实现简单高效。
[0064]在一种可能的实施方式中,本发明实施例提供的装置中,内存分配单元302根据该请求消息为应用模块用户分配一个内存块,并且建立该内存块被该应用模块用户占用的记录信息,具体用于:针对为该应用模块用户分配的每一内存块:内存分配单元302在预设的内存管理链表中存储应用模块用户标识与该内存块属性信息之间的对应关系,其中,内存管理链表中的表项与内存块一一对应,用于记录每一内存块被应用模块用户占用的记录信息,内存块属性信息包括内存块的标识和地址信息。
[0065]在一种可能的实施方式中,本发明实施例提供的装置中,内存管理链表中包括忙链表和闲链表,当内存分配单元302为应用模块用户分配一内存块时,从闲链表中获取一表项存储该内存块被该应用模块用户占用的记录信息,并添加到忙链表中。
[0066]在一种可能的实施方式中,本发明实施例提供的装置中,内存分配单元302从闲链表中获取一表项存储该内存块被该应用模块用户占用的记录信息之后,还用于:在预先存储的内存关系表中存储表项标识与内存块标识之间的对应关系;内存释放单元304具体用于:当确定需要释放为应用模块用户分配的任一内存块时,释放该内存块,并根据内存关系表以及该内存块标识,确定该内存块标识对应的表项,删除该表项中存储的该内存块被该应用模块用户占用的记录信息;然后,将该表项添加到闲链表中。
[0067]在一种可能的实施方式中,本发明实施例提供的装置中,处理单元306通过如下方式确定还存在该应用模块用户对应的内存块被该应用模块用户占用的记录信息:当处理单元306确定内存管理链表的忙链表中存在应用模块用户标识与内存块属性信息之间的对应关系时,处理单元306确定还存在该应用模块用户对应的内存块被该应用模块用户占用的记录信息。
[0068]在一种可能的实施方式中,本发明实施例提供的装置中,内存分配单元302还用于:在忙链表的每一表项中记录应用模块用户申请的内存块所处理的业务信息;处理单元306确定还存在该应用模块用户对应的内存块被该应用模块用户占用的记录信息之后,还用于:将记录有该记录信息的表项中记录的应用模块用户申请的内存块所处理的业务信息进行转存。
[0069]本发明实施例提供的装置中,在忙链表的每一表项中记录应用模块用户申请的内存块所处理的业务信息,当需要释放应用模块用户时,若忙链表中任一表项中仍然存储有该应用模块用户对应的内存块被该应用模块用户占用的记录信息,则该应用模块用户占用的内存块存在内存泄露,则将该记录有记录信息的表项中记录的应用模块用户申请的内存块所处理的业务信息进行转存,便于后续内存泄露定位。
[0070]在一种可能的实施方式中,本发明实施例提供的装置中,预先设置多个内存管理链表,并且,处理单元306还用于:当接入多个应用模块用户时,对多个应用模块用户进行分组,得到多个应用模块用户组,建立应用模块用户组与内存管理链表之间的映射关系;处理单元306通过如下方式确定还存在该应用模块用户对应的内存块被该应用模块用户占用的记录信息:处理单元306确定该应用模块用户所在的应用模块用户组,并根据应用模块用户组与内存管理链表之间的映射关系,确定应用模块用户对应的内存管理链表,当确定该内存管理链表的忙链表中存在该应用模块用户标识与内存块属性信息之间的对应关系时,确定还存在该应用模块用户对应的内存块被该应用模块用户占用的记录信息。
[0071]本发明实施例提供的装置中,当预先设置多个内存管理链表,并且接入的应用模块用户为多个时,对多个应用模块用户进行分组,得到多个应用模块用户组,建立应用模块用户组与内存管理链表之间的映射关系,则可以通过如下方式确定还存在该应用模块用户对应的内存块被该应用模块用户占用的记录信息:确定该应用模块用户所在的应用模块用户组,并根据所述映射关系,确定应用模块用户对应的内存管理链表,当确定该内存管理链表的忙链表中存在应用模块用户标识与内存块属性信息之间的对应关系时,确定还存在该应用模块用户对应的内存块被该应用模块用户占用的记录信息,确定应用模块用户所在的应用模块用户组,并根据映射关系确定该应用模块用户组对应的内存管理链表,在该内存管理链表中的忙链表中查找是否存在应用模块用户标识与内存块属性信息之间的对应关系,从而避免在预先设置的多个内存管理链表中查找是否存在应用模块用户标识与内存块属性信息之间的对应关系,缩小内存泄露的检测范围,提高内存泄露的检测效率。
[0072]本发明实施例提供的内存管理装置,可以集成在网络设备中,也可以集成在网络设备的内存管理模块中,其中,内存分配单元302、内存释放单元304和处理单元306均可以采用CPU处理器等。
[0073]综上所述,本发明实施例提供的一种内存管理方法及装置,接收到应用模块用户申请内存的请求消息时,根据该请求消息为应用模块用户分配一个内存块,建立该内存块被该应用模块用户占用的记录信息,当确定需要释放该内存块时,释放该内存块,并且删除该内存块被该应用模块用户占用的记录信息,当需要释放应用模块用户时,若确定还存在该应用模块用户对应的内存块被该应用模块用户占用的记录信息,则释放该记录信息中记录的被该应用模块用户占用的内存块,也即检测到内存泄露时,及时释放泄露的内存,避免由于内存泄露导致单板故障、业务异常,而且实现简单高效。
[0074]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0075]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1