CN113377522A - 内存池中内存块的处理方法、装置、电子设备和存储介质 - Google Patents

内存池中内存块的处理方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN113377522A
CN113377522A CN202010158304.6A CN202010158304A CN113377522A CN 113377522 A CN113377522 A CN 113377522A CN 202010158304 A CN202010158304 A CN 202010158304A CN 113377522 A CN113377522 A CN 113377522A
Authority
CN
China
Prior art keywords
memory
memory block
data
mark
occupant
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010158304.6A
Other languages
English (en)
Inventor
赵木华
韩森
林坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Datang Mobile Communications Equipment Co Ltd
Original Assignee
Datang Mobile Communications Equipment Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Datang Mobile Communications Equipment Co Ltd filed Critical Datang Mobile Communications Equipment Co Ltd
Priority to CN202010158304.6A priority Critical patent/CN113377522A/zh
Publication of CN113377522A publication Critical patent/CN113377522A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

本发明实施例提供了一种内存池中内存块的处理方法、装置、电子设备和存储介质,对内存池中每一内存块中设置数据开头结构和数据结尾结构。其中,数据开头结构中包括内存块的占用信息和标识内存块的数据存储结构起始位置的开头标记;数据结尾结构中包括标识数据存储结构终止位置的结尾标记。通过占用信息能够确定当前占用内存块的任务或应用程序和/或当前的任务或应用程序占用内存块的占用时长,从而根据占用信息能够定位可能存在泄漏问题的内存块。根据开头标记和/或结尾标记是否被覆盖能够对内存块是否存在写越界进行判断。

Description

内存池中内存块的处理方法、装置、电子设备和存储介质
技术领域
本发明涉及通信技术领域,尤其是涉及一种内存池中内存块的处理方法、装置、电子设备和存储介质。
背景技术
在系统底层,可以采用“内存池和内存块”的方式处理内存使用问题。例如,在5G(5th Generation Mobile Communication System,第五代移动通信系统)NR(New Radio,新空口)基站系统中,系统底层基本采用DPDK(Data Plane Development Kit数据面开发套件)实现以太报文的收发功能。其中,DPDK是使用内存池作为固定大小mbuf(存储器缓存,即内存块)的分配器的,其在数据平面应用中为快速的数据包处理提供了一个简单的完善的软件架构。
然而,现有的采用“内存池和内存块”处理内存使用问题的过程中,缺少对应的保护和问题定位的手段,当使用内存块的过程中出现写越界,或者内存池中的内存块存在泄漏等问题时很难定位。
发明内容
本发明实施例提供一种内存池中内存块的处理方法、装置、电子设备和存储介质,用以解决现有技术中当使用内存块的过程中出现写越界,或者内存池中的内存块存在泄漏等问题时很难定位的问题。
针对以上技术问题,第一方面,本发明实施例提供一种内存池中内存块的处理方法,包括:
获取创建内存池时,分配到所述内存池的内存块;
在每一内存块中设置数据开头结构和数据结尾结构,所述数据开头结构设置在内存块的头部结构和内存块的数据存储结构之间,所述数据结尾结构设置在所述数据存储结构和内存块的尾部结构之间;
其中,所述数据开头结构中包括占用内存块存储资源的占用信息和标识所述数据存储结构起始位置的开头标记;所述数据结尾结构中包括标识所述数据存储结构终止位置的结尾标记;占用信息包括占用内存块的占用者的标识信息、占用者在内存块中存储的数据所占用的存储容量和/或占用者占用内存块的占用时间。
第二方面,本发明实施例提供一种内存池中内存块的处理装置,包括:
获取模块,用于获取创建内存池时,分配到所述内存池的内存块;
处理模块,用于在每一内存块中设置数据开头结构和数据结尾结构,所述数据开头结构设置在内存块的头部结构和内存块的数据存储结构之间,所述数据结尾结构设置在所述数据存储结构和内存块的尾部结构之间;
其中,所述数据开头结构中包括占用内存块存储资源的占用信息和标识所述数据存储结构起始位置的开头标记;所述数据结尾结构中包括标识所述数据存储结构终止位置的结尾标记;占用信息包括占用内存块的占用者的标识信息、占用者在内存块中存储的数据所占用的存储容量和/或占用者占用内存块的占用时间。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以上所述的内存池中内存块的处理方法的步骤。
第四方面,本发明实施例提供一种非暂态可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以上任一项所述的内存池中内存块的处理方法的步骤。
本发明的实施例提供一种内存池中内存块的处理方法、装置、电子设备和存储介质,对内存池中每一内存块中设置数据开头结构和数据结尾结构。其中,数据开头结构中包括内存块的占用信息和标识内存块的数据存储结构起始位置的开头标记;数据结尾结构中包括标识数据存储结构终止位置的结尾标记。通过占用信息能够确定当前占用内存块的任务或应用程序和/或当前的任务或应用程序占用内存块的占用时长,从而根据占用信息能够定位可能存在泄漏问题的内存块。根据开头标记和/或结尾标记是否被覆盖能够对内存块是否存在写越界进行判断。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的作为对比的内存池和内存块结构示意图;
图2是本发明一实施例提供的内存池中内存块的处理方法的流程示意图;
图3是本发明一实施例提供的内存池和内存块结构示意图;
图4是本发明一实施例提供的内存块数据发送的流程示意图;
图5是本发明一实施例提供的内存块分配的流程示意图;
图6是本发明一实施例提供的内存块接收的流程示意图;
图7是本发明一实施例提供的内存块释放的流程示意图;
图8是本发明一实施例提供的内存池中内存块的处理装置的结构框图;
图9是本发明一实施例提供的电子设备的实体结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现以DPDK为例,对DPDK、内存池的结构,以及内存池中内存块的结构进行介绍。DPDK使用标准大页作为其内存分配的基础,DPDK有着复杂的机制用于管理DPDK获取的大页内存。DPDK使用内存池作为固定大小内存块的分配器,使用固定大小内存块来存放网卡中收到的数据,发送数据时将数据写到固定大小的内存块中交由网卡发送出去。
图1是本实施例提供的作为对比的内存池和内存块结构示意图,参见图1,图1上方由mbuf(即内存块)组成的结构表示内存池,内存池是由指定数量的内存块组成的。内存池中拥有内存块的个数是在创建内存池时指定的。具体来说,创建内存池时根据需要创建的内存池大小,确定内存池中内存块的数量。每一个mbuf的结构如图1下方显示,包括mbuf的头部结构、数据存储结构data和尾部结构tail。头部结构包括begin、structrte_mbuf和head room。其中,数据存储结构data是存放数据的空间。尾部结构tail用于内存块cacheline对齐。在头部结构中,begin中存放内存池所需链表结构;struct rte_mbuf是每一个内存块的记录和管理结构;headroom是内存块在数据存储结构data前的预留空间。
在DPDK中,在对创建了内存池,对内存池初始化后,使用到内存块的操作有内存块分配、内存块释放、内存块中数据的发送和内存块中数据的接收。然而,基于图1所示的内存块的结构,在使用内存块的过程中无法定位可能存在泄漏问题的内存块,也无法对内存块中存在的写越界问题进行判断。
为了解决上述技术问题,图2为本申请实施例提供的内存池中内存块的处理方法的流程示意图,图3为本申请实施例提供的内存池和内存块结构示意图,参见图2和图3,该方法包括:
步骤201:获取创建内存池时,分配到所述内存池的内存块;
需要说明的是,本实施例提供的方法由任一通过“内存池和内存块”的方式处理内存使用问题的设备执行,例如,该设备是基于DPDK实现收发功能的基站系统。具体来说,本实施提供的方法可以由设备中的某一功能模块执行,该功能模块能够读取设备中的应用程序创建的任务(例如,对数据进行缓存或发送的任务),然后根据读取的任务通过DPDK完成对任务的执行过程。
内存池创建时,根据用户需求从大页内存中分配出指定数量的mbuf到该内存池中。其中,指定数量以及内存池中内存块的用途由创建内存池的用户来确定。
步骤202:在每一内存块中设置数据开头结构和数据结尾结构,所述数据开头结构设置在内存块的头部结构和内存块的数据存储结构之间,所述数据结尾结构设置在所述数据存储结构和内存块的尾部结构之间;
其中,所述数据开头结构中包括占用内存块存储资源的占用信息和标识所述数据存储结构起始位置的开头标记;所述数据结尾结构中包括标识所述数据存储结构终止位置的结尾标记;占用信息包括占用内存块的占用者的标识信息、占用者在内存块中存储的数据所占用的存储容量和/或占用者占用内存块的占用时间。
参见图3,在每一内存块中设置数据开头结构OSP_BLK和数据结尾结构OSP_TAIL,所述数据开头结构OSP_BLK设置在内存块的头部结构和内存块的数据存储结构之间,所述数据结尾结构OSP_TAIL设置在所述数据存储结构和内存块的尾部结构之间;所述数据开头结构OSP_BLK中包括占用内存块存储资源的占用信息和标识所述数据存储结构起始位置的开头标记;所述数据结尾结构OSP_TAIL中包括标识所述数据存储结构终止位置的结尾标记。可理解的是,当向数据存储结构中写入需存储的数据时,可以在开头标记之后开始写入,并不超过结尾标记。占用者的标识信息为作为占用者的应用程序的名称和/或作为占用者的任务的任务标识。
具体地,数据开头结构OSP_BLK设置在内存块的头部结构中的headroom和内存块的数据存储结构data之间。
其中,当需要发送某一内存块中存储的数据,还可以在内存块的占用信息中添加发送者,以及发送者需发送的数据在内存块占用的存储容量。可以循环对内存池中的内存块执行上述步骤202,直到遍历所述内存池中的每一内存块。
其中,在内存块中增设的数据开头结构和数据结尾结构是为了对内存块进行边界保护,以及对内存块的使用进行记录的。具体地:
当向内存块中写入数据时,若写入的数据覆盖了数据开头结构OSP_BLK中的开头标记和/或数据结尾结构OSP_TAIL中的结尾标记,则该内存块存在写越界的问题,同时也说明该内存块的结构被破坏。因此,通过开头标记和结尾标记能够定位内存块中出现的写越界和内存块结构被破坏的问题。
另外,内存泄漏是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。在本申请中,通过各内存块的占用信息能够确定各任务或应用程序所占用的内存块数量,所占用的内存块数量较多的则有可能是导致存在内存泄露的任务或应用程序。或者也可以通过占用信息确定内存块被当前任务或应用程序占用的占用时长,对内存块占用时长较长的任务或应用程序也有可能导致内存泄露。通过占用信息定位出有可能导致内存泄露的可以任务或应用程序,从而有利于快速定位出导致内存泄露的任务或应用程序。
本实施例提供一种内存池中内存块的处理方法,对内存池中每一内存块中设置数据开头结构和数据结尾结构。其中,数据开头结构中包括内存块的占用信息和标识内存块的数据存储结构起始位置的开头标记;数据结尾结构中包括标识数据存储结构终止位置的结尾标记。通过占用信息能够确定当前占用内存块的任务或应用程序和/或当前的任务或应用程序占用内存块的占用时长,从而根据占用信息能够定位可能存在泄漏问题的内存块。根据开头标记和/或结尾标记是否被覆盖能够对内存块是否存在写越界进行判断。
进一步地,在上述实施例的基础上,还包括:
根据各内存块的占用信息确定当前占用各内存块的占用者,根据当前占用各内存块的占用者确定每一占用者所占用内存块的数量,对所占用内存块的数量大于预设数量的占用者添加第一标记,显示当前占用各内存块的占用者和添加了所述第一标记的占用者;
和/或,根据各内存块的占用信息确定各内存块被当前的占用者占用的占用时长,获取占用时长大于预设时长的内存块,作为目标内存块,对占用各目标内存块的占用者添加第二标记,显示各内存块被当前的占用者占用的占用时长和添加了所述第二标记的占用者;
和/或,对各内存块的开头标记和/或结尾标记是否被覆盖进行检测,对检测的开头标记和/或结尾标记被覆盖的内存块添加第三标记,显示添加了第三标记的内存块;
其中,占用者为占用内存块的任务和/或应用程序。
其中,通过对各内存块进行扫描,获取各内存块的占用信息,并判断各内存块的开头标记和/或结尾标记是否被覆盖。
其中,预设数量和预设时长为设定值。
添加了第一标记的占用者是所占用的内存块数量较多的占用者,添加了第二标记的占用者是对某一内存块占用时长较长的占用者,因而添加了第一标记和/或第二标记的占用者是可能导致内存泄露的占用者,对这样的占用者进行标记有利于对内存泄漏问题进行定位。
添加了第三标记的内存块是对内存块扫描发现开头标记和/或结尾标记被覆盖的内存块,这些内存块可能由于数据存储结构中的数据越界,导致内存块的结构被破坏。因此,第三标记有利于快速定位到结构被破坏的内存块。
本实施例通过第一标记和第二标记,有利于快速实现对内存泄漏问题的定位。通过第三标记有利于快速实现对存在结构损坏的内存块的定位。
进一步地,在上述各实施例的基础上,还包括:
若需执行对第一数据进行发送的第一任务,则根据所述第一任务确定存储所述第一数据的第一内存块和对所述第一数据进行发送的发送者,在第一内存块的数据开头结构中的占用信息中添加所述发送者的标识信息;
若检测到所述第一内存块中的开头标记和/或结尾标记否被覆盖,则向所述发送者返回提示信息,否则,发送所述第一数据;所述提示信息用于提示所述第一数据的存储位置越界,所述第一数据发送失败;
其中,发送者为所述第一任务和/或发起所述第一任务的应用程序。
需要说明的是,在设备中,由设备中的应用程序创建任务(例如,对数据进行缓存或发送的任务),这些任务组成任务列表。该设备中执行本申请方法的功能模块读取任务列表中的任务,当读取到对第一数据进行发送的第一任务,则从第一任务中获取存储第一数据的内存块的地址,从而确定存储第一数据的第一内存块。一方面在第一内存块的占用信息中添加发送者的标识信息,另一方面,过对第一内存块的开头标记和/或结尾标记进行检测,得到第一内存块是否存在写越界的检测结果,根据检测结果发送第一数据或者返回提示信息。
发送者的标识信息为作为发送者的应用程序的名称和/或作为发送者的任务的任务标识。
图4是本实施例提供的内存块数据发送的流程示意图,参见图4,当发送内存块中的数据时,需在内存块的占用信息中写入发送者的信息(包括发送者和所发送的数据占用的内存空间大小),然后再调用DPDK的发送接口实现数据的发送。具体地,应用程序通过模块调用DPDK,将发送者的信息添加到占用信息中,然后通过调用DPDK的发送接口对开头标记和/或结尾标记是否被覆盖进行判断,若未被覆盖,则直接执行发送,否则,向该发送者返回提示信息,以提示发送者该第一数据发送失败。此外,在完成第一任务后,可以调用DPDK的释放接口释放这些第一内存块。
本实施例在发送的过程中在内存块的数据开头结构OSP_BLK的占用信息中添加发送者的信息,并在发送过程中对内存块是否存在写越界进行判断,若存在,向发送者返回提示信息。避免了将损坏的数据进行发送,提高了数据发送的可靠性和稳定性,也实现了发送失败时对发送者的告知。
进一步地,在上述各实施例的基础上,还包括:
若需执行对第二数据进行缓存的第二任务,则从所述内存池中未被占用的内存块中,确定用于缓存所述第二数据的第二内存块;
将所述第二任务和/或发起所述第二任务的应用程序作为占用所述第二内存块的目标占用者,在各所述第二内存块的数据开头结构中的占用信息中添加所述目标占用者的标识信息,并在各所述第二内存块中写入所述第二数据。
可理解的是,第二任务和第一任务通常是先后执行的,例如,应用程序需要发送一个还未缓存的数据,则需要通过第二任务先实现对该数据的缓存,然后通过第一任务实现对数据的发送。在这一过程中,第二任务执行后,直接根据执行第二任务时数据缓存的内存块的地址,生成第一任务。
需要说明的是,当设备中的功能模块读取的任务是对第二数据进行缓存的第二任务,则从内存池中未被占用的内存块中分配出至少一个第二内存块,用于缓存第二数据。图5为本实施例提供的内存块分配的流程示意图,图6为本实施例提供的内存块接收的流程示意图。参见图5,当需要执行第二任务时,可以先调用DPDK内存分配接口,从内存池中确定分配给第二任务的第二内存块,将第二任务作为占用这些第二内存块的目标占用者,在每一第二内存块数据开头结构OSP_BLK的占用信息中添加该目标占用者,完成内存块的分配过程。参见图6,在接收到数据需进行缓存时,也需要执行上述第二任务,通过调用DPDK接口接收数据到第二内存块,并将第二任务作为占用这些第二内存块的目标占用者,在第二内存块的占用信息中添加该目标占用者和所占用的内存大小,实现了对接收的数据进行缓存的第二任务。此外,在完成第二任务后,在对第二内存块的数据进行使用后,可以调用DPDK的释放接口释放这些第二内存块。
本实施例在对数据进行缓存的过程中,在占用信息中添加占用内存块的占用者的信息,便于了解各内存块的使用信息,有利于内存泄露问题的定位。
进一步地,在上述各实施例的基础上,还包括:
对所述内存池中任一第三内存块,在对所述第三内存块中缓存的第三数据进行发送后和/或在调用了所述第三数据后,释放所述第三内存块并清除所述第三内存块的数据开头结构中存储的占用信息。
需要说明的是,当内存池中的某一第三内存块中的数据被发送或者被调用后,设备的功能模块会通过释放接口实现资源释放。具体来说,对第三内存块,会通过释放接口删除在内存块中存储的第三数据,并将数据开头结构中存储的占用信息进行清除。
图7为本实施例提供的内存块释放的流程示意图,参见图7,在对内存块进行释放时,需要对内存块的数据开头结构中的占用信息进行还原,以使内存块恢复到未被任何占用者占用的状态。即还原占用信息中的内存占用者和/或内存发送者,调用DPDK的释放接口实现内存块的释放。
本实施例在对内存块进行释放的过程中,也相应地对占用信息中存储的占用者和/或发送者进行清除,保证内存块的再次被正常使用。
进一步地,在上述各实施例的基础上,所述数据开头结构中还包括内存块的属性信息;
其中,属性信息包括内存块在内存池中的序号和内存块的最大存储容量。
进一步地,通过扫描所述内存池中的内存块,显示个内存块的属性信息。
本实施例在数据开头结构中添加内存块的属性信息,便于通过属性信息对各内存块进行更全面的了解,有利于增加对各内存块使用的合理性。
总之,在本申请中,当应用使用内存池出现问题或需要查看内存池的使用信息时,调用内存池扫描功能。内存池使用内存地址和内存地址偏移的方式找到内存池中每一个内存块的OSP_BLK和OSP_TAIL结构,检查OSP_BLK和OSP_TAIL结构中的内存块开头标记和内存块结尾标记的内容来判断内存块的使用是否有越界问题,结合内存块拥有者和内存块发送者来判断越界问题的任务;统计OSP_BLK中内存块拥有者和内存块发送者的内容来判断内存池的使用情况。
图8为本实施例提供的内存池中内存块的处理装置的结构框图,参见图8,该装置包括获取模块801和处理模块802,其中,
获取模块801,用于获取创建内存池时,分配到所述内存池的内存块;
处理模块802,用于在每一内存块中设置数据开头结构和数据结尾结构,所述数据开头结构设置在内存块的头部结构和内存块的数据存储结构之间,所述数据结尾结构设置在所述数据存储结构和内存块的尾部结构之间;
其中,所述数据开头结构中包括占用内存块存储资源的占用信息和标识所述数据存储结构起始位置的开头标记;所述数据结尾结构中包括标识所述数据存储结构终止位置的结尾标记;占用信息包括占用内存块的占用者的标识信息、占用者在内存块中存储的数据所占用的存储容量和/或占用者占用内存块的占用时间。
本实施例提供的内存池中内存块的处理装置适用于上述各实施例提供的内存池中内存块的处理方法,在此不再赘述。
本实施例提供一种内存池中内存块的处理装置,对内存池中每一内存块中设置数据开头结构和数据结尾结构。其中,数据开头结构中包括内存块的占用信息和标识内存块的数据存储结构起始位置的开头标记;数据结尾结构中包括标识数据存储结构终止位置的结尾标记。通过占用信息能够确定当前占用内存块的任务或应用程序和/或当前的任务或应用程序占用内存块的占用时长,从而根据占用信息能够定位可能存在泄漏问题的内存块。根据开头标记和/或结尾标记是否被覆盖能够对内存块是否存在写越界进行判断。
进一步地,在上述实施例的基础上,所述处理模块还用于:
根据各内存块的占用信息确定当前占用各内存块的占用者,根据当前占用各内存块的占用者确定每一占用者所占用内存块的数量,对所占用内存块的数量大于预设数量的占用者添加第一标记,显示当前占用各内存块的占用者和添加了所述第一标记的占用者;
和/或,根据各内存块的占用信息确定各内存块被当前的占用者占用的占用时长,获取占用时长大于预设时长的内存块,作为目标内存块,对占用各目标内存块的占用者添加第二标记,显示各内存块被当前的占用者占用的占用时长和添加了所述第二标记的占用者;
和/或,对各内存块的开头标记和/或结尾标记是否被覆盖进行检测,对检测的开头标记和/或结尾标记被覆盖的内存块添加第三标记,显示添加了第三标记的内存块;
其中,占用者为占用内存块的任务和/或应用程序。
进一步地,在上述各实施例的基础上,所述处理模块还用于:
若需执行对第一数据进行发送的第一任务,则根据所述第一任务确定存储所述第一数据的第一内存块和对所述第一数据进行发送的发送者,在第一内存块的数据开头结构中的占用信息中添加所述发送者的标识信息;
若检测到所述第一内存块中的开头标记和/或结尾标记否被覆盖,则向所述发送者返回提示信息,否则,发送所述第一数据;所述提示信息用于提示所述第一数据的存储位置越界,所述第一数据发送失败;
其中,发送者为所述第一任务和/或发起所述第一任务的应用程序。
进一步地,在上述各实施例的基础上,所述处理模块还用于:
若需执行对第二数据进行缓存的第二任务,则从所述内存池中未被占用的内存块中,确定用于缓存所述第二数据的第二内存块;
将所述第二任务和/或发起所述第二任务的应用程序作为占用所述第二内存块的目标占用者,在各所述第二内存块的数据开头结构中的占用信息中添加所述目标占用者的标识信息,并在各所述第二内存块中写入所述第二数据。
进一步地,在上述各实施例的基础上,所述处理模块还用于:
对所述内存池中任一第三内存块,在对所述第三内存块中缓存的第三数据进行发送后和/或在调用了所述第三数据后,释放所述第三内存块并清除所述第三内存块的数据开头结构中存储的占用信息。
进一步地,在上述各实施例的基础上,所述数据开头结构中还包括内存块的属性信息;
其中,属性信息包括内存块在内存池中的序号和内存块的最大存储容量。
图9示例了一种电子设备的实体结构示意图,如图9所示,该电子设备可以包括:处理器(processor)901、通信接口(Communications Interface)902、存储器(memory)903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信。处理器901可以调用存储器903中的逻辑指令,以执行如下方法:获取创建内存池时,分配到所述内存池的内存块;在每一内存块中设置数据开头结构和数据结尾结构,所述数据开头结构设置在内存块的头部结构和内存块的数据存储结构之间,所述数据结尾结构设置在所述数据存储结构和内存块的尾部结构之间;其中,所述数据开头结构中包括占用内存块存储资源的占用信息和标识所述数据存储结构起始位置的开头标记;所述数据结尾结构中包括标识所述数据存储结构终止位置的结尾标记;占用信息包括占用内存块的占用者的标识信息、占用者在内存块中存储的数据所占用的存储容量和/或占用者占用内存块的占用时间。
此外,上述的存储器903中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
进一步地,本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取创建内存池时,分配到所述内存池的内存块;在每一内存块中设置数据开头结构和数据结尾结构,所述数据开头结构设置在内存块的头部结构和内存块的数据存储结构之间,所述数据结尾结构设置在所述数据存储结构和内存块的尾部结构之间;其中,所述数据开头结构中包括占用内存块存储资源的占用信息和标识所述数据存储结构起始位置的开头标记;所述数据结尾结构中包括标识所述数据存储结构终止位置的结尾标记;占用信息包括占用内存块的占用者的标识信息、占用者在内存块中存储的数据所占用的存储容量和/或占用者占用内存块的占用时间。
另一方面,本发明实施例还提供一种非暂态可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的传输方法,例如包括:获取创建内存池时,分配到所述内存池的内存块;在每一内存块中设置数据开头结构和数据结尾结构,所述数据开头结构设置在内存块的头部结构和内存块的数据存储结构之间,所述数据结尾结构设置在所述数据存储结构和内存块的尾部结构之间;其中,所述数据开头结构中包括占用内存块存储资源的占用信息和标识所述数据存储结构起始位置的开头标记;所述数据结尾结构中包括标识所述数据存储结构终止位置的结尾标记;占用信息包括占用内存块的占用者的标识信息、占用者在内存块中存储的数据所占用的存储容量和/或占用者占用内存块的占用时间。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (14)

1.一种内存池中内存块的处理方法,其特征在于,包括:
获取创建内存池时,分配到所述内存池的内存块;
在每一内存块中设置数据开头结构和数据结尾结构,所述数据开头结构设置在内存块的头部结构和内存块的数据存储结构之间,所述数据结尾结构设置在所述数据存储结构和内存块的尾部结构之间;
其中,所述数据开头结构中包括占用内存块存储资源的占用信息和标识所述数据存储结构起始位置的开头标记;所述数据结尾结构中包括标识所述数据存储结构终止位置的结尾标记;占用信息包括占用内存块的占用者的标识信息、占用者在内存块中存储的数据所占用的存储容量和/或占用者占用内存块的占用时间。
2.根据权利要求1所述的内存池中内存块的处理方法,其特征在于,还包括:
根据各内存块的占用信息确定当前占用各内存块的占用者,根据当前占用各内存块的占用者确定每一占用者所占用内存块的数量,对所占用内存块的数量大于预设数量的占用者添加第一标记,显示当前占用各内存块的占用者和添加了所述第一标记的占用者;
和/或,根据各内存块的占用信息确定各内存块被当前的占用者占用的占用时长,获取占用时长大于预设时长的内存块,作为目标内存块,对占用各目标内存块的占用者添加第二标记,显示各内存块被当前的占用者占用的占用时长和添加了所述第二标记的占用者;
和/或,对各内存块的开头标记和/或结尾标记是否被覆盖进行检测,对检测的开头标记和/或结尾标记被覆盖的内存块添加第三标记,显示添加了第三标记的内存块;
其中,占用者为占用内存块的任务和/或应用程序。
3.根据权利要求1所述的内存池中内存块的处理方法,其特征在于,还包括:
若需执行对第一数据进行发送的第一任务,则根据所述第一任务确定存储所述第一数据的第一内存块和对所述第一数据进行发送的发送者,在第一内存块的数据开头结构中的占用信息中添加所述发送者的标识信息;
若检测到所述第一内存块中的开头标记和/或结尾标记否被覆盖,则向所述发送者返回提示信息,否则,发送所述第一数据;所述提示信息用于提示所述第一数据的存储位置越界,所述第一数据发送失败;
其中,发送者为所述第一任务和/或发起所述第一任务的应用程序。
4.根据权利要求1所述的内存池中内存块的处理方法,其特征在于,还包括:
若需执行对第二数据进行缓存的第二任务,则从所述内存池中未被占用的内存块中,确定用于缓存所述第二数据的第二内存块;
将所述第二任务和/或发起所述第二任务的应用程序作为占用所述第二内存块的目标占用者,在各所述第二内存块的数据开头结构中的占用信息中添加所述目标占用者的标识信息,并在各所述第二内存块中写入所述第二数据。
5.根据权利要求1所述的内存池中内存块的处理方法,其特征在于,还包括:
对所述内存池中任一第三内存块,在对所述第三内存块中缓存的第三数据进行发送后和/或在调用了所述第三数据后,释放所述第三内存块并清除所述第三内存块的数据开头结构中存储的占用信息。
6.根据权利要求1所述的内存池中内存块的处理方法,其特征在于,所述数据开头结构中还包括内存块的属性信息;
其中,属性信息包括内存块在内存池中的序号和内存块的最大存储容量。
7.一种内存池中内存块的处理装置,其特征在于,包括:
获取模块,用于获取创建内存池时,分配到所述内存池的内存块;
处理模块,用于在每一内存块中设置数据开头结构和数据结尾结构,所述数据开头结构设置在内存块的头部结构和内存块的数据存储结构之间,所述数据结尾结构设置在所述数据存储结构和内存块的尾部结构之间;
其中,所述数据开头结构中包括占用内存块存储资源的占用信息和标识所述数据存储结构起始位置的开头标记;所述数据结尾结构中包括标识所述数据存储结构终止位置的结尾标记;占用信息包括占用内存块的占用者的标识信息、占用者在内存块中存储的数据所占用的存储容量和/或占用者占用内存块的占用时间。
8.根据权利要求7所述的内存池中内存块的处理装置,其特征在于,所述处理模块还用于:
根据各内存块的占用信息确定当前占用各内存块的占用者,根据当前占用各内存块的占用者确定每一占用者所占用内存块的数量,对所占用内存块的数量大于预设数量的占用者添加第一标记,显示当前占用各内存块的占用者和添加了所述第一标记的占用者;
和/或,根据各内存块的占用信息确定各内存块被当前的占用者占用的占用时长,获取占用时长大于预设时长的内存块,作为目标内存块,对占用各目标内存块的占用者添加第二标记,显示各内存块被当前的占用者占用的占用时长和添加了所述第二标记的占用者;
和/或,对各内存块的开头标记和/或结尾标记是否被覆盖进行检测,对检测的开头标记和/或结尾标记被覆盖的内存块添加第三标记,显示添加了第三标记的内存块;
其中,占用者为占用内存块的任务和/或应用程序。
9.根据权利要求7所述的内存池中内存块的处理装置,其特征在于,所述处理模块还用于:
若需执行对第一数据进行发送的第一任务,则根据所述第一任务确定存储所述第一数据的第一内存块和对所述第一数据进行发送的发送者,在第一内存块的数据开头结构中的占用信息中添加所述发送者的标识信息;
若检测到所述第一内存块中的开头标记和/或结尾标记否被覆盖,则向所述发送者返回提示信息,否则,发送所述第一数据;所述提示信息用于提示所述第一数据的存储位置越界,所述第一数据发送失败;
其中,发送者为所述第一任务和/或发起所述第一任务的应用程序。
10.根据权利要求7所述的内存池中内存块的处理装置,其特征在于,所述处理模块还用于:
若需执行对第二数据进行缓存的第二任务,则从所述内存池中未被占用的内存块中,确定用于缓存所述第二数据的第二内存块;
将所述第二任务和/或发起所述第二任务的应用程序作为占用所述第二内存块的目标占用者,在各所述第二内存块的数据开头结构中的占用信息中添加所述目标占用者的标识信息,并在各所述第二内存块中写入所述第二数据。
11.根据权利要求7所述的内存池中内存块的处理装置,其特征在于,所述处理模块还用于:
对所述内存池中任一第三内存块,在对所述第三内存块中缓存的第三数据进行发送后和/或在调用了所述第三数据后,释放所述第三内存块并清除所述第三内存块的数据开头结构中存储的占用信息。
12.根据权利要求7所述的内存池中内存块的处理装置,其特征在于,所述数据开头结构中还包括内存块的属性信息;
其中,属性信息包括内存块在内存池中的序号和内存块的最大存储容量。
13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述的内存池中内存块的处理方法的步骤。
14.一种非暂态可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述的内存池中内存块的处理方法的步骤。
CN202010158304.6A 2020-03-09 2020-03-09 内存池中内存块的处理方法、装置、电子设备和存储介质 Pending CN113377522A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010158304.6A CN113377522A (zh) 2020-03-09 2020-03-09 内存池中内存块的处理方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010158304.6A CN113377522A (zh) 2020-03-09 2020-03-09 内存池中内存块的处理方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN113377522A true CN113377522A (zh) 2021-09-10

Family

ID=77568575

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010158304.6A Pending CN113377522A (zh) 2020-03-09 2020-03-09 内存池中内存块的处理方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN113377522A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115237607A (zh) * 2022-09-21 2022-10-25 北京中科网威信息技术有限公司 内存配置方法、装置、电子设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572460A (zh) * 2014-12-30 2015-04-29 大唐移动通信设备有限公司 一种内存泄露的检测方法和装置
WO2016123908A1 (zh) * 2015-02-06 2016-08-11 中兴通讯股份有限公司 一种内存越界的检测方法及装置
WO2016173172A1 (zh) * 2015-04-29 2016-11-03 中兴通讯股份有限公司 堆内存操作的检测方法及装置
CN106648893A (zh) * 2016-12-20 2017-05-10 北京匡恩网络科技有限责任公司 一种内存管理方法及设备
CN106919454A (zh) * 2017-01-25 2017-07-04 福建三元达网络技术有限公司 基于lte协议栈的内存池问题定位方法及其系统
CN108664394A (zh) * 2018-04-10 2018-10-16 北京奇安信科技有限公司 一种内存泄露过程追溯方法及装置
CN109144872A (zh) * 2018-08-20 2019-01-04 杭州迪普科技股份有限公司 内存泄漏的检测方法、装置、终端设备及可读存储介质
US20190220391A1 (en) * 2016-09-28 2019-07-18 Huawei Technologies Co., Ltd. Memory management method and device

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572460A (zh) * 2014-12-30 2015-04-29 大唐移动通信设备有限公司 一种内存泄露的检测方法和装置
WO2016123908A1 (zh) * 2015-02-06 2016-08-11 中兴通讯股份有限公司 一种内存越界的检测方法及装置
WO2016173172A1 (zh) * 2015-04-29 2016-11-03 中兴通讯股份有限公司 堆内存操作的检测方法及装置
US20190220391A1 (en) * 2016-09-28 2019-07-18 Huawei Technologies Co., Ltd. Memory management method and device
CN106648893A (zh) * 2016-12-20 2017-05-10 北京匡恩网络科技有限责任公司 一种内存管理方法及设备
CN106919454A (zh) * 2017-01-25 2017-07-04 福建三元达网络技术有限公司 基于lte协议栈的内存池问题定位方法及其系统
CN108664394A (zh) * 2018-04-10 2018-10-16 北京奇安信科技有限公司 一种内存泄露过程追溯方法及装置
CN109144872A (zh) * 2018-08-20 2019-01-04 杭州迪普科技股份有限公司 内存泄漏的检测方法、装置、终端设备及可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115237607A (zh) * 2022-09-21 2022-10-25 北京中科网威信息技术有限公司 内存配置方法、装置、电子设备及存储介质
CN115237607B (zh) * 2022-09-21 2022-12-13 北京中科网威信息技术有限公司 内存配置方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN110413521B (zh) 一种堆内存的写越界检测方法和装置
US11853767B2 (en) Inter-core data processing method, system on chip and electronic device
CN110392100B (zh) 高并发事件的处理方法及装置、存储介质、计算机设备
CN108829342B (zh) 一种日志存储方法、系统及存储装置
CN108664394B (zh) 一种内存泄露过程追溯方法及装置
CN110580674B (zh) 信息处理方法、装置及系统
CN113377522A (zh) 内存池中内存块的处理方法、装置、电子设备和存储介质
CN108664208B (zh) 基于flash存储器的文件追加写操作方法及装置
CN115827506A (zh) 数据写入方法、数据读取方法、装置、处理核和处理器
CN109983749B (zh) 计算设备和提高数据传递速度的方法
CN101447931A (zh) 一种排他操作的实现方法和装置
CN108228476B (zh) 一种数据获取方法及装置
US8910004B2 (en) Information processing apparatus, and method of controlling information processing apparatus
CN111240879A (zh) 一种sas卡固件日志收集方法、系统、装置及存储介质
CN109857553A (zh) 内存管理方法及装置
CN116932273A (zh) 一种用于rdma中的功能级复位处理方法、装置及存储介质
CN103164290B (zh) 应用内存管理方法和装置
CN111597149B (zh) 一种数据库的数据清理方法及装置
CN111261206B (zh) 一种读写方法、装置和电子设备及可读存储介质
CN109976672B (zh) 一种读写冲突优化方法、装置、电子设备及可读存储介质
CN109286539A (zh) 检测发送异常的方法、装置、通信设备及可读存储介质
CN115878351B (zh) 消息的传输方法及装置、存储介质及电子装置
CN118113490A (zh) 用于设备的内存管理方法、装置、设备、存储介质及车辆
CN115599574B (zh) 图形处理系统、电子组件、电子设备及信息处理方法
CN114721717B (zh) 基于双系统的手机管理系统mdm指令调用方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination