CN112650645B - 堆内存使用情况监测方法、装置和5g基站设备 - Google Patents
堆内存使用情况监测方法、装置和5g基站设备 Download PDFInfo
- Publication number
- CN112650645B CN112650645B CN202011553696.2A CN202011553696A CN112650645B CN 112650645 B CN112650645 B CN 112650645B CN 202011553696 A CN202011553696 A CN 202011553696A CN 112650645 B CN112650645 B CN 112650645B
- Authority
- CN
- China
- Prior art keywords
- heap memory
- released
- memory
- hash node
- key value
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明实施例公开了堆内存使用情况监测方法、装置和5G基站设备,该方法包括:在调用二次封装的堆内存申请函数时,确定二次封装的堆内存申请函数预申请的堆内存的信息头和调用二次封装的堆内存申请函数的代码位置;根据预申请的堆内存的信息头确定预申请的堆内存对应的哈希节点地址;确定哈希表中的预申请的堆内存对应的哈希节点地址是否存在代码位置对应的key值;若存在代码位置对应的key值,则key值对应的value值加一;若不存在代码位置对应的key值,则以代码位置作为key值、以1为对应的value值,将key值和对应的value值记录到预申请的堆内存对应的哈希节点地址。实现快速便捷地检测堆内存的使用情况。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种堆内存使用情况监测方法、装置和5G基站设备。
背景技术
在5G基站软件运行过程中,由于并发多任务的存在,每个任务对内存的消耗不确定,需要大量使用动态内存来应对,从而引入大量、无序、频繁的堆内存申请和堆内存释放的操作,容易出现内存泄漏或内存破坏造成设备运行异常。5G基站设备属于嵌入式设备,同时业务上要求高吞吐量低延时,常用内存检查软件不适合于5G基站软件使用。
发明内容
鉴于上述问题,本发明提出一种堆内存使用情况监测方法、装置和5G基站设备。
本发明实施例提出一种堆内存使用情况监测方法,应用于5G基站设备,该方法包括:
在调用二次封装的堆内存申请函数时,确定所述二次封装的堆内存申请函数预申请的堆内存的信息头和调用所述二次封装的堆内存申请函数的代码位置;
根据所述预申请的堆内存的信息头确定所述预申请的堆内存对应的哈希节点地址;
确定哈希表中的所述预申请的堆内存对应的哈希节点地址是否存在所述代码位置对应的key值;
若存在所述代码位置对应的key值,则所述key值对应的value值加一;
若不存在所述代码位置对应的key值,则以所述代码位置作为key值、以1为对应的value值,将所述key值和所述对应的value值记录到所述预申请的堆内存对应的哈希节点地址。
本发明实施例所述的堆内存使用情况监测方法,还包括:
在调用二次封装的堆内存释放函数时,确定所述二次封装的堆内存释放函数预释放的堆内存的信息头;
根据所述预释放的堆内存的信息头确定预释放的堆内存是否正确;
若正确,则根据所述预释放的堆内存的信息头确定所述预释放的堆内存对应的哈希节点地址;
确定所述预释放的堆内存对应的哈希节点地址对应的value值是否为零;
若为零,则删除所述预释放的堆内存对应的哈希节点;
若不为零,则所述预释放的堆内存对应的哈希节点地址对应的value值减一。
本发明实施例所述的堆内存使用情况监测方法,还包括:
在查看堆内存使用情况时,通过signal机制触发堆内存使用情况查看进程遍历所述哈希表,并把所述哈希表的每个哈希节点的记录输出。
本发明实施例所述的堆内存使用情况监测方法,所述信息头的长度根据所述5G基站设备的系统位数确定;
在所述5G基站设备为32位系统时,所述信息头的长度为16个字节,前12个字节用于记录堆内存校验位,后4个字节用于记录对应的哈希节点地址;
在所述5G基站设备为64位系统时,所述信息头的长度为20个字节,前12个字节用于记录堆内存校验位,后8个字节用于记录对应的哈希节点地址。
本发明实施例所述的堆内存使用情况监测方法,用于记录堆内存校验位的前12个字节的第一个字节至第四个字节用于记录堆内存大小,第五个字节至第八个字节用于记录所述堆内存大小的第一异或值,第九个字节至第十二个字节用于记录所述堆内存大小的第二异或值。
本发明实施例所述的堆内存使用情况监测方法,所述二次封装的堆内存申请函数包括osa_malloc()、osa_realloc()、osa_calloc()和osa_strdup()。
本发明实施例提出一种堆内存使用情况监测装置,应用于5G基站设备,该装置包括:
解析模块,用于在调用二次封装的堆内存申请函数时,确定所述二次封装的堆内存申请函数预申请的堆内存的信息头和调用所述二次封装的堆内存申请函数的代码位置;
确定模块,用于根据所述预申请的堆内存的信息头确定所述预申请的堆内存对应的哈希节点地址;
判断模块,用于确定哈希表中的所述预申请的堆内存对应的哈希节点地址是否存在所述代码位置对应的key值;
计数模块,用于若存在所述代码位置对应的key值,则所述key值对应的value值加一;
记录模块,用于若不存在所述代码位置对应的key值,则以所述代码位置作为key值、以1为对应的value值,将所述key值和所述对应的value值记录到所述预申请的堆内存对应的哈希节点地址。
本发明实施例所述的堆内存使用情况监测装置:
所述解析模块,还用于在调用二次封装的堆内存释放函数时,确定所述二次封装的堆内存释放函数预释放的堆内存的信息头;
所述确定模块,还用于根据所述预释放的堆内存的信息头确定预释放的堆内存是否正确,若正确,则根据所述预释放的堆内存的信息头确定所述预释放的堆内存对应的哈希节点地址;
所述判断模块,还用于确定所述预释放的堆内存对应的哈希节点地址对应的value值是否为零;
所述记录模块,还用于若为零,则删除所述预释放的堆内存对应的哈希节点;
所述计数模块,还用于若不为零,则所述预释放的堆内存对应的哈希节点地址对应的value值减一。
本发明实施例涉及一种5G基站设备,包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序在所述处理器上运行时执行本发明实施例所述的堆内存使用情况监测方法。
本发明实施例涉及一种可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行本发明实施例涉及所述的堆内存使用情况监测方法。
本发明公开的堆内存使用情况监测方法包括:在调用二次封装的堆内存申请函数时,确定所述二次封装的堆内存申请函数预申请的堆内存的信息头和调用所述二次封装的堆内存申请函数的代码位置;根据所述预申请的堆内存的信息头确定所述预申请的堆内存对应的哈希节点地址;确定哈希表中的所述预申请的堆内存对应的哈希节点地址是否存在所述代码位置对应的key值;若存在所述代码位置对应的key值,则所述key值对应的value值加一;若不存在所述代码位置对应的key值,则以所述代码位置作为key值、以1为对应的value值,将所述key值和所述对应的value值记录到所述预申请的堆内存对应的哈希节点地址。本发明的技术方案将堆内存申请函数调用次数和调用的代码位置(源码文件名+行数)保存在哈希表中。该方法用于记录操作的内存消耗少,且哈希表的查找快速,可以把内存检查功能整合到5G基站设备的运行软件中,做到不更新软件,不打断软件业务运行的同时,可以快速便捷地使用内存检查功能并进行软件内存检查。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1示出了本发明实施例提出的一种堆内存使用情况监测方法的流程示意图;
图2示出了本发明实施例提出的一种堆内存申请释放的过程示意图;
图3示出了本发明实施例提出的另一种堆内存使用情况监测方法的流程示意图;
图4示出了本发明实施例提出的一种堆内存使用情况监测装置的结构示意图。
主要元件符号说明:
10-堆内存使用情况监测装置;11-解析模块;12-确定模块;13-判断模块;14-计数模块;15-记录模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
在5G基站设备运行过程中,由于并发多任务的存在,每个任务对内存的消耗不确定,需要大量使用动态内存来应对,从而引入大量、无序、频繁的堆内存申请和堆内存释放的操作,容易出现内存泄漏或内存破坏,造成5G基站设备运行异常。5G基站设备属于嵌入式设备,同时业务上要求高吞吐量低延时,常用内存检查软件存在以下问题,不适合于5G基站设备使用。
需要改造代码及编译过程才能使能内存检查功能,不利于问题的排查;检查结果不直观,需要结合bin文件和编译符号表来解析;占用大量的CPU时间(查找匹配堆内存使用情况)、内存(缓存堆内存使用情况)和存储(保存堆内存使用日志),拖慢系统运行,并引发软件运行时序错误,无法满足5G基站设备调试需求。
本发明通过二次封装堆内存申请函数和堆内存释放函数,使得在调用堆内存申请函数或堆内存释放函数时,可以将堆内存申请函数和堆内存释放函数的调用次数和调用的代码位置(源码文件名+行数)保存在哈希表中。该方法用于记录操作的内存消耗少,且哈希表的查找快速,可以把内存检查功能整合到5G基站设备的运行软件中,做到不更新软件,不打断软件业务运行的同时,可以快速便捷地使用内存检查功能并进行软件内存检查。
实施例1
本实施例,参见图1,示出了一种应用于5G基站设备的堆内存使用情况监测方法包括以下步骤:
S10:在调用二次封装的堆内存申请函数时,确定所述二次封装的堆内存申请函数预申请的堆内存的信息头和调用所述二次封装的堆内存申请函数的代码位置。
可以理解,在5G基站设备的软件代码的main函数里,需要初始化用于管理堆内存的hash表,hash表的每个节点用于保存调用所述二次封装的堆内存申请函数的代码位置,以及堆内存申请函数的相关调用次数。调用所述二次封装的堆内存申请函数的代码位置用源码文件名和代码行数表示。
二次封装的堆内存申请函数包括osa_malloc()、osa_realloc()、osa_calloc()和osa_strdup()等。例如,osa_malloc(si,fi,li),si表示第i个预申请的堆内存对应的堆内存大小,fi表示第i个代码位置对应的文件名,li表示第i个代码位置对应的代码行数;osa_realloc()、osa_strdup()和osa_calloc()封装后的参数个数是四个,osa_realloc(pi,si,fi,li)是扩大内存的函数,pi是原有内存地址,si是要扩大的内存地址;osa_strdup(pi,mi,fi,li)是复制字符串内存的函数,pi是原有字符串内存地址,mi是允许复制的最大长度;osa_calloc(ni,si,fi,li),ni代表分配内存块的个数,si代表每块内存的大小,申请的内存总大小为ni*si,同时申请的内存内容会被清零,而osa_malloc()不会做清零操作,需要调用者自己做清零操作。
示范性的,参见图2,osa_malloc(size1,file1,line1)的size1可以确定预申请的堆内存的信息头,在所述5G基站设备为32位系统时,所述信息头的长度为16个字节,前12个字节用于记录堆内存校验位,后4个字节用于记录对应的哈希节点地址,即图2中Hash nodepointer1;在所述5G基站设备为64位系统时,所述信息头的长度为20个字节前12个字节用于记录堆内存校验位,后8个字节用于记录对应的哈希节点地址。用于记录堆内存校验位的前12个字节的第一个字节至第四个字节用于记录堆内存大小size1,第五个字节至第八个字节用于记录所述堆内存大小的第一异或值size1^0xffffffff,第九个字节至第十二个字节用于记录所述堆内存大小的第二异或值size1^0xffffffff。
S20:根据所述预申请的堆内存的信息头确定所述预申请的堆内存对应的哈希节点地址。
在所述5G基站设备为32位系统时,所述信息头的长度为16个字节,用后4个字节用于记录对应的哈希节点地址,即图2中Hash node pointer1;在所述5G基站设备为64位系统时,所述信息头的长度为20个字节,用后8个字节用于记录对应的哈希节点地址。
S30:确定哈希表中的所述预申请的堆内存对应的哈希节点地址是否存在所述代码位置对应的key值。
可以理解,Hash表的本质是数组,数组的每个元素又是一个(key,value)链表,其中,key值可以用调用堆内存申请函数的key值表示,即(file1line1,value),若哈希表中已经存在所述代码位置对应的key值,则执行步骤S40,若哈希表中不存在所述代码位置对应的key值,则执行步骤S50。
S40:所述key值对应的value值加一。
在哈希表中已经存在所述代码位置对应的key值时,代码位置对应的key值对应的value值加一。
S50:以所述代码位置作为key值、以1为对应的value值,将所述key值和所述对应的value值记录到所述预申请的堆内存对应的哈希节点地址。
在哈希表中不存在所述代码位置对应的key值时,以所述代码位置作为key值、以1为对应的value值,将所述key值和所述对应的value值记录到所述预申请的堆内存对应的哈希节点地址。
本实施例公开的堆内存使用情况监测方法包括:在调用二次封装的堆内存申请函数时,确定所述二次封装的堆内存申请函数预申请的堆内存的信息头和调用所述二次封装的堆内存申请函数的代码位置;根据所述预申请的堆内存的信息头确定所述预申请的堆内存对应的哈希节点地址;确定哈希表中的所述预申请的堆内存对应的哈希节点地址是否存在所述代码位置对应的key值;若存在所述代码位置对应的key值,则所述key值对应的value值加一;若不存在所述代码位置对应的key值,则以所述代码位置作为key值、以1为对应的value值,将所述key值和所述对应的value值记录到所述预申请的堆内存对应的哈希节点地址。本实施例的技术方案将堆内存申请函数调用次数和调用的代码位置(源码文件名+行数)保存在哈希表中。该方法用于记录操作的内存消耗少,且哈希表的查找快速,可以把内存检查功能整合到5G基站设备的运行软件中,做到不更新软件,不打断软件业务运行的同时,可以快速便捷地使用内存检查功能并进行软件内存检查。
实施例2
本实施例,参见图3,示出了一种应用于5G基站设备的堆内存使用情况监测方法还包括以下步骤:
S60:在调用二次封装的堆内存释放函数时,确定所述二次封装的堆内存释放函数预释放的堆内存的信息头。
堆内存释放函数包括free()函数,如图2所示,堆内存释放函数free(P1),即释放malloc(size1,file1,line1)在源代码文件file1的第line1申请的大小为size1的堆内存。根据size1可以确定二次封装的堆内存释放函数预释放的堆内存的信息头。
S70:根据所述预释放的堆内存的信息头确定预释放的堆内存是否正确。
根据所述预释放的堆内存的信息头的前12个字节可以确定预释放的堆内存是否正确。若正确,则执行步骤S80,若不正确,则执行步骤S71:放弃堆内存释放操作。
S80:根据所述预释放的堆内存的信息头确定所述预释放的堆内存对应的哈希节点地址。
在5G基站设备为32位系统时,所述信息头的长度为16个字节,用后4个字节用于记录对应的哈希节点地址;在5G基站设备为64位系统时,信息头的长度为20个字节,用后8个字节用于记录对应的哈希节点地址。
S90:确定所述预释放的堆内存对应的哈希节点地址对应的value值是否为零。
若为零,则执行步骤S91,若不为零,则执行步骤S92。
S91:删除所述预释放的堆内存对应的哈希节点。
S92:所述预释放的堆内存对应的哈希节点地址对应的value值减一。
进一步的,在查看堆内存使用情况时,可以signal机制触发堆内存使用情况查看进程遍历所述哈希表,并把所述哈希表的每个哈希节点的记录输出。
实施例3
本实施例,参见图4,示出了一种应用于5G基站设备的堆内存使用情况监测装置10包括:解析模块11、确定模块12、判断模块13、计数模块14和记录模块15。
解析模块11,用于在调用二次封装的堆内存申请函数时,确定所述二次封装的堆内存申请函数预申请的堆内存的信息头和调用所述二次封装的堆内存申请函数的代码位置;确定模块12,用于根据所述预申请的堆内存的信息头确定所述预申请的堆内存对应的哈希节点地址;判断模块13,用于确定哈希表中的所述预申请的堆内存对应的哈希节点地址是否存在所述代码位置对应的key值;计数模块14,用于若存在所述代码位置对应的key值,则所述key值对应的value值加一;记录模块15,用于若不存在所述代码位置对应的key值,则以所述代码位置作为key值、以1为对应的value值,将所述key值和所述对应的value值记录到所述预申请的堆内存对应的哈希节点地址。
进一步的,所述解析模块11,还用于在调用二次封装的堆内存释放函数时,确定所述二次封装的堆内存释放函数预释放的堆内存的信息头;所述确定模块12,还用于根据所述预释放的堆内存的信息头确定预释放的堆内存是否正确,若正确,则根据所述预释放的堆内存的信息头确定所述预释放的堆内存对应的哈希节点地址;所述判断模块13,还用于确定所述预释放的堆内存对应的哈希节点地址对应的value值是否为零;所述计数模块14,还用于若不为零,则所述预释放的堆内存对应的哈希节点地址对应的value值减一;所述记录模块15,还用于若为零,则删除所述预释放的堆内存对应的哈希节点。
进一步的,堆内存使用情况监测装置10还包括输出模块,用于查看堆内存使用情况时,可以signal机制触发堆内存使用情况查看进程遍历所述哈希表,并把所述哈希表的每个哈希节点的记录输出。
本实施例公开的堆内存使用情况监测装置10通过解析模块11、确定模块12、判断模块13、计数模块14和记录模块15的配合使用,用于执行上述实施例所述的堆内存使用情况监测方法,上述实施例所涉及的实施方案以及有益效果在本实施例中同样适用,在此不再赘述。
可以理解,本发明实施例涉及一种5G基站设备,包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序在所述处理器上运行时执行本发明实施例所述的堆内存使用情况监测方法。
可以理解,本发明实施例涉及一种可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行本发明实施例所述的堆内存使用情况监测方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种堆内存使用情况监测方法,其特征在于,应用于5G基站设备,该方法包括:
在调用二次封装的堆内存申请函数时,确定所述二次封装的堆内存申请函数预申请的堆内存的信息头和调用所述二次封装的堆内存申请函数的代码位置;
根据所述预申请的堆内存的信息头确定所述预申请的堆内存对应的哈希节点地址;
确定哈希表中的所述预申请的堆内存对应的哈希节点地址是否存在所述代码位置对应的key值;
若存在所述代码位置对应的key值,则所述key值对应的value值加一;
若不存在所述代码位置对应的key值,则以所述代码位置作为key值、以1为对应的value值,将所述key值和所述对应的value值记录到所述预申请的堆内存对应的哈希节点地址。
2.根据权利要求1所述的堆内存使用情况监测方法,其特征在于,还包括:
在调用二次封装的堆内存释放函数时,确定所述二次封装的堆内存释放函数预释放的堆内存的信息头;
根据所述预释放的堆内存的信息头确定预释放的堆内存是否正确;
若正确,则根据所述预释放的堆内存的信息头确定所述预释放的堆内存对应的哈希节点地址;
确定所述预释放的堆内存对应的哈希节点地址对应的value值是否为零;
若为零,则删除所述预释放的堆内存对应的哈希节点;
若不为零,则所述预释放的堆内存对应的哈希节点地址对应的value值减一。
3.根据权利要求1所述的堆内存使用情况监测方法,其特征在于,还包括:
在查看堆内存使用情况时,通过signal机制触发堆内存使用情况查看进程遍历所述哈希表,并把所述哈希表的每个哈希节点的记录输出。
4.根据权利要求1所述的堆内存使用情况监测方法,其特征在于,所述信息头的长度根据所述5G基站设备的系统位数确定;
在所述5G基站设备为32位系统时,所述信息头的长度为16个字节,前12个字节用于记录堆内存校验位,后4个字节用于记录对应的哈希节点地址;
在所述5G基站设备为64位系统时,所述信息头的长度为20个字节,前12个字节用于记录堆内存校验位,后8个字节用于记录对应的哈希节点地址。
5.根据权利要求4所述的堆内存使用情况监测方法,其特征在于,用于记录堆内存校验位的前12个字节的第一个字节至第四个字节用于记录堆内存大小,第五个字节至第八个字节用于记录所述堆内存大小的第一异或值,第九个字节至第十二个字节用于记录所述堆内存大小的第二异或值。
6.根据权利要求1至5任一项所述的堆内存使用情况监测方法,其特征在于,所述二次封装的堆内存申请函数包括osa_malloc()、osa_realloc()、osa_calloc()和osa_strdup()。
7.一种堆内存使用情况监测装置,其特征在于,应用于5G基站设备,该装置包括:
解析模块,用于在调用二次封装的堆内存申请函数时,确定所述二次封装的堆内存申请函数预申请的堆内存的信息头和调用所述二次封装的堆内存申请函数的代码位置;
确定模块,用于根据所述预申请的堆内存的信息头确定所述预申请的堆内存对应的哈希节点地址;
判断模块,用于确定哈希表中的所述预申请的堆内存对应的哈希节点地址是否存在所述代码位置对应的key值;
计数模块,用于若存在所述代码位置对应的key值,则所述key值对应的value值加一;
记录模块,用于若不存在所述代码位置对应的key值,则以所述代码位置作为key值、以1为对应的value值,将所述key值和所述对应的value值记录到所述预申请的堆内存对应的哈希节点地址。
8.根据权利要求7所述的堆内存使用情况监测装置,其特征在于:
所述解析模块,还用于在调用二次封装的堆内存释放函数时,确定所述二次封装的堆内存释放函数预释放的堆内存的信息头;
所述确定模块,还用于根据所述预释放的堆内存的信息头确定预释放的堆内存是否正确,若正确,则根据所述预释放的堆内存的信息头确定所述预释放的堆内存对应的哈希节点地址;
所述判断模块,还用于确定所述预释放的堆内存对应的哈希节点地址对应的value值是否为零;
所述记录模块,还用于若为零,则删除所述预释放的堆内存对应的哈希节点;
所述计数模块,还用于若不为零,则所述预释放的堆内存对应的哈希节点地址对应的value值减一。
9.一种5G基站设备,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序在所述处理器上运行时执行权利要求1至6任一项所述的堆内存使用情况监测方法。
10.一种可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序在处理器上运行时执行权利要求1至6任一项所述的堆内存使用情况监测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011553696.2A CN112650645B (zh) | 2020-12-24 | 2020-12-24 | 堆内存使用情况监测方法、装置和5g基站设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011553696.2A CN112650645B (zh) | 2020-12-24 | 2020-12-24 | 堆内存使用情况监测方法、装置和5g基站设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112650645A CN112650645A (zh) | 2021-04-13 |
CN112650645B true CN112650645B (zh) | 2023-05-30 |
Family
ID=75362695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011553696.2A Active CN112650645B (zh) | 2020-12-24 | 2020-12-24 | 堆内存使用情况监测方法、装置和5g基站设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112650645B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342604B (zh) * | 2021-06-07 | 2022-06-24 | 平安证券股份有限公司 | 内存使用率的检测方法、装置、终端及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106682492A (zh) * | 2015-11-06 | 2017-05-17 | 大唐移动通信设备有限公司 | 一种内存越界的管理方法及装置 |
CN107133144A (zh) * | 2017-05-02 | 2017-09-05 | 山东浪潮商用系统有限公司 | 一种动态监测堆内存使用错误的内存监测装置及方法 |
CN109214180A (zh) * | 2017-06-30 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 一种内存代码的校验方法及装置 |
CN111859372A (zh) * | 2020-07-29 | 2020-10-30 | 中国工商银行股份有限公司 | 堆内存攻击的检测方法、装置和电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5883300B2 (ja) * | 2012-02-02 | 2016-03-09 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | オブジェクトを特定するためのハッシュコードを生成するための方法、プログラム及びシステム |
-
2020
- 2020-12-24 CN CN202011553696.2A patent/CN112650645B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106682492A (zh) * | 2015-11-06 | 2017-05-17 | 大唐移动通信设备有限公司 | 一种内存越界的管理方法及装置 |
CN107133144A (zh) * | 2017-05-02 | 2017-09-05 | 山东浪潮商用系统有限公司 | 一种动态监测堆内存使用错误的内存监测装置及方法 |
CN109214180A (zh) * | 2017-06-30 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 一种内存代码的校验方法及装置 |
CN111859372A (zh) * | 2020-07-29 | 2020-10-30 | 中国工商银行股份有限公司 | 堆内存攻击的检测方法、装置和电子设备 |
Non-Patent Citations (2)
Title |
---|
"基于布隆过滤器的海量数据查询技术的优化与应用";饶文 等;《微型电脑应用》;第34卷(第2期);68-71 * |
"基于配对函数调用场景的设备驱动漏洞检测";王佳 等;《计算机系统应用》;第28卷(第10期);35-44 * |
Also Published As
Publication number | Publication date |
---|---|
CN112650645A (zh) | 2021-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6832302B1 (en) | Methods and apparatus for detecting heap smashing | |
US7487321B2 (en) | Method and system for memory leak detection | |
US7962832B2 (en) | Method for detecting memory error | |
CN106919454B (zh) | 基于lte协议栈的内存池问题定位方法及其系统 | |
US20070271418A1 (en) | Resource leak diagnosis | |
CN111680008B (zh) | 日志处理方法、系统、可读存储介质及智能设备 | |
US20100211835A1 (en) | Method for testing a memory device | |
KR101852219B1 (ko) | 편집 가능 메타데이터를 포함하는 파일들을 보호하는 기법 | |
US7434020B2 (en) | Overwrite detection diagnostic for memory heap | |
CN112650645B (zh) | 堆内存使用情况监测方法、装置和5g基站设备 | |
US7653672B2 (en) | Heap dump acquiring method | |
CN115408247A (zh) | 基于大数据的威胁行为分析方法及服务器 | |
CN110990346A (zh) | 基于区块链的文件数据处理方法、装置、设备及存储介质 | |
US11467896B2 (en) | Sections in crash dump files | |
US7350045B2 (en) | Dynamic memory heap tagging | |
CN106228065A (zh) | 一种缓冲区溢出漏洞的定位方法与装置 | |
CN111857600B (zh) | 一种数据读写方法及装置 | |
CN112181830A (zh) | 内存泄露的检测方法、装置、终端及介质 | |
US6829739B1 (en) | Apparatus and method for data buffering | |
WO2020177495A1 (zh) | 一种数据库连接管理方法及装置、设备 | |
CN112631821A (zh) | 内存故障检测定位方法、装置、计算机设备及存储介质 | |
CN111538651A (zh) | 接口测试方法、装置、服务器及存储介质 | |
CN112162893A (zh) | 一种内存泄漏定位方法、装置及电子设备 | |
CN113688048B (zh) | 一种应用稳定性检测方法、装置、电子设备及存储介质 | |
CN113138874B (zh) | 一种机载电子战嵌入式软件内存溢出检测方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |