CN112817838A - 内存泄漏信息处理方法、装置、电子设备及存储介质 - Google Patents
内存泄漏信息处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112817838A CN112817838A CN201911128685.7A CN201911128685A CN112817838A CN 112817838 A CN112817838 A CN 112817838A CN 201911128685 A CN201911128685 A CN 201911128685A CN 112817838 A CN112817838 A CN 112817838A
- Authority
- CN
- China
- Prior art keywords
- memory
- service module
- allocation
- module
- data structure
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 584
- 230000010365 information processing Effects 0.000 title claims abstract description 22
- 238000003672 processing method Methods 0.000 title claims abstract description 15
- 238000000034 method Methods 0.000 claims abstract description 56
- 238000012545 processing Methods 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 141
- 230000006386 memory function Effects 0.000 claims description 97
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 abstract description 22
- 238000001514 detection method Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 12
- 230000000007 visual effect Effects 0.000 description 11
- 238000007726 management method Methods 0.000 description 10
- 230000009286 beneficial effect Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000009365 direct transmission Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- BBRBUTFBTUFFBU-LHACABTQSA-N Ornoprostil Chemical compound CCCC[C@H](C)C[C@H](O)\C=C\[C@H]1[C@H](O)CC(=O)[C@@H]1CC(=O)CCCCC(=O)OC BBRBUTFBTUFFBU-LHACABTQSA-N 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
Abstract
本申请提供一种内存泄漏信息处理方法、装置、电子设备及存储介质,涉及内存泄漏检测技术领域。所述方法包括:获取第一业务模块分配内存时发送来的第一业务模块编号和第一模块分配内存大小;基于所述第一业务模块编号和所述第一模块分配内存大小在业务模块信息记录表中创建或更新所述第一业务模块编号对应的第一业务模块内存分配记录,所述第一业务模块内存分配记录包括所述第一业务模块编号和所述第一模块分配内存大小。基于对业务模块内存分配的信息监控,而不是基于申请的每块内存块进行信息监控,减少了数据处理量,提高了内存泄漏信息监测的效率和直观性。
Description
技术领域
本申请涉及内存泄漏检测技术领域,具体而言,涉及一种内存泄漏信息处理方法、装置、电子设备及存储介质。
背景技术
多进程的系统一般是基于虚拟内存的系统,比如像Linux和Windows系统,进程的地址空间是相互独立的。系统对内存资源的管理是基于进程的,系统中能够看到每个进程对内存资源的使用情况。
在高端嵌入式系统中,比如路由器和交换机等,其上运行的系统由早期的单进程运行模式操作系统,逐渐替换为Linux多进程运行模式操作系统,业务模块逐渐的进行进程化,即一个业务模块对应一个进程,但因为种种因素,大部分业务模块无法及时完成进程化,即出现多个业务模块存在于一个进程中的情况,由于系统只能以进程为单位对内存资源的使用情况进行监视,以每块申请的内存块为单位进行信息记录和关联,导致进程内部的各个业务模块的内存使用情况无法得知,在进行内存泄漏情况的监控时不直观,且需要记录和处理较多的信息,需要占用较多的资源,不利于业务模块内存泄露问题的跟进和解决。
发明内容
有鉴于此,本申请实施例的目的在于提供一种内存泄漏信息处理方法、装置、电子设备及存储介质,以改善现有技术中存在的进行内存泄漏情况的监控时不直观,需要记录和处理较多的信息,占用资源较多的问题。
本申请实施例提供了一种内存泄漏信息处理方法,所述方法包括:获取第一业务模块分配内存时发送来的第一业务模块编号和第一模块分配内存大小;基于所述第一业务模块编号和所述第一模块分配内存大小在业务模块信息记录表中创建或更新所述第一业务模块编号对应的第一业务模块内存分配记录,所述第一业务模块内存分配记录包括所述第一业务模块编号和所述第一模块分配内存大小。
在上述实现方式中,通过业务模块信息记录表对分配内存的业务模块以及分配内存大小进行记录,基于业务模块一方进行内存泄漏信息的监控,不需要记录文件名等对内存泄漏信息监控作用较小的信息,无需消耗过多的系统内存,提高了内存泄漏信息处理的效率,且基于业务模块视角进行内存泄漏信息的获取,能够使内存泄漏信息在针对普通用户时更加直观。
可选地,所述第一业务模块内存分配记录还包括第一模块分配次数,所述方法还包括:在所述业务模块信息记录表中创建或更新所述第一业务模块内存分配记录时,将所述第一模块分配次数加一。
在上述实现方式中,对业务模块进行内存分配的次数进行统计,有利于进行内存泄漏的判断。
可选地,所述方法还包括:获取所述第一业务模块分配内存时发送来的第一分配内存函数编号和第一函数分配内存大小;基于所述第一分配内存函数编号和所述第一函数分配内存大小在函数信息记录表中创建或更新所述第一分配内存函数编号对应的第一函数内存分配记录。
在上述实现方式中,针对业务模块具体进行内存分配的分配内存函数进行内存分配信息的统计,并通过函数信息记录表进行直观排列,进一步提高了内存泄漏信息监控的直观性,并向用户提供了专业化、精确化的内存分配信息,提高了内存泄漏的确定精度和准确度。
可选地,所述方法还包括:获取第二业务模块释放内存时发送来的第二业务模块编号和模块分配内存指针;基于所述模块分配内存指针确定需要释放的模块释放内存大小;基于所述第二业务模块编号和所述模块释放内存大小在业务模块信息记录表中更新所述第二业务模块编号对应的第二业务模块内存分配记录,所述第二业务模块内存分配记录包括所述第二业务模块编号和第二模块分配内存大小。
在上述实现方式中,在业务模块对内存进行释放时,在业务模块信息记录表中更新其对应记录,对内存泄漏信息进行实时更新,保证了内存泄漏监控的实时性。
可选地,所述方法还包括:获取所述第二业务模块释放内存时发送来的第二分配内存函数编号和函数分配内存指针;基于所述函数分配内存指针确定需要释放的第二函数释放内存大小;基于所述第二分配内存函数编号和所述第二函数释放内存大小在函数信息记录表中更新所述第二分配内存函数编号对应的第二函数内存分配记录,所述第二函数内存分配记录包括所述第二分配内存函数编号和第二函数分配内存大小。
在上述实现方式中,在分配内存函数对内存进行释放时,在函数信息记录表中更新其对应记录,对内存泄漏信息进行实时更新,保证了内存泄漏监控的实时性。
可选地,所述方法还包括:获取所述第一业务模块分配内存时发送来的第一分配数据结构编号和第一数据结构分配内存大小,所述第一分配数据结构编号用于确定进行内存分配的数据结构;基于所述第一分配数据结构编号和所述第一数据结构分配内存大小在数据结构信息记录表中创建或更新所述第一分配数据结构编号对应的第一数据结构内存分配记录,所述第一数据结构内存分配记录包括所述第一分配数据结构编号和所述第一数据结构分配内存大小。可选地,建立所述第一分配数据结构编号和第一数据结构分配内存大小之间映射关系,后续第一数据结构分配内存大小可以直接从第一分配数据结构编号映射查询获得。
在上述实现方式中,针对业务模块具体进行内存分配的分配数据结构进行内存分配信息的统计,并通过数据结构信息记录表进行直观排列,进一步提高了内存泄漏信息监控的直观性,并向用户提供了专业化、精确化的内存分配信息,提高了内存泄漏的确定精度和准确度。
可选地,所述第一数据结构内存分配记录还包括第一数据结构分配次数,所述方法还包括:在所述数据结构信息记录表中创建或更新所述第一数据结构内存分配记录时,将所述第一数据结构分配次数加一。
在上述实现方式中,对分配数据结构进行内存分配的次数进行统计,有利于进行内存泄漏的判断。
可选地,所述方法还包括:获取所述第二业务模块释放内存时发送来的第二分配数据结构编号和数据结构分配内存指针;基于所述数据结构分配内存指针确定需要释放的第二数据结构释放内存大小;基于所述第二分配数据结构编号和所述第二数据结构释放内存大小在数据结构信息记录表中更新所述第二分配数据结构编号对应的第二数据结构内存分配记录,所述第二数据结构内存分配记录包括所述第二分配数据结构编号和第二数据结构分配内存大小。
在上述实现方式中,在分配内存函数对数据结构内存进行释放时,在数据结构信息记录表中更新其对应记录,对内存泄漏信息进行实时更新,保证了内存泄漏监控的实时性。
可选地,所述第二数据结构内存分配记录还包括第二数据结构分配次数,所述方法还包括:在所述数据结构信息记录表中更新所述第二数据结构内存分配记录时,将所述第二数据结构分配次数减一。
在上述实现方式中,基于分配和释放内存的实际情况对分配内存数据结构进行内存分配的次数进行统计,有利于进行内存泄漏的判断。
可选地,所述方法还包括:在将所述第一业务模块的内存分配至第三业务模块时,获取所述第一业务模块将内存分配至所述第三业务模块时发送来的所述第一业务模块编号、第三业务模块编号、第三模块分配内存大小;基于所述第一业务模块编号和所述第三模块分配内存大小在所述业务模块信息记录表中更新所述第一业务模块编号对应的第一业务模块内存分配记录;将所述第一模块分配次数减一;基于所述第三业务模块编号和所述第三模块分配内存大小在所述业务模块信息记录表中创建或更新所述第三业务模块编号对应的第三业务模块内存分配记录;将所述第三业务模块内存分配记录中的第三模块分配次数加一。
在上述实现方式中,通过业务模块分配内存泄漏信息的直接传输和显示,实现了某一业务模块通过另一业务模块间接分配内存时的实际内存分配情况的确定和显示,从而提高了内存泄漏监控的准确性。
本申请实施例提供了一种内存泄漏信息处理装置,所述装置包括:信息获取模块,用于获取第一业务模块分配内存时发送来的第一业务模块编号和第一模块分配内存大小;记录更新模块,用于基于所述第一业务模块编号和所述第一模块分配内存大小在业务模块信息记录表中创建或更新所述第一业务模块编号对应的第一业务模块内存分配记录,所述第一业务模块内存分配记录包括所述第一业务模块编号和所述第一模块分配内存大小。
在上述实现方式中,通过业务模块信息记录表对分配内存的业务模块以及分配内存大小进行记录,基于业务模块一方进行内存泄漏信息的监控,不需要记录文件名等对内存泄漏信息监控作用较小的信息,无需消耗过多的系统内存,提高了内存泄漏信息处理的效率,且基于业务模块视角进行内存泄漏信息的获取和显示,能够使内存泄漏信息在对普通用户进行显示时更加直观。
可选地,所述记录更新模块还用于:在所述业务模块信息记录表中创建或更新所述第一业务模块内存分配记录时,将所述第一模块分配次数加一。
在上述实现方式中,对业务模块进行内存分配的次数进行统计,有利于进行内存泄漏的判断。
可选地,所述信息获取模块还用于:获取所述第一业务模块分配内存时发送来的第一分配内存函数编号和第一函数分配内存大小;所述记录更新模块还用于:基于所述第一分配内存函数编号和所述第一函数分配内存大小在函数信息记录表中创建或更新所述第一分配内存函数编号对应的第一函数内存分配记录,所述第一函数内存分配记录包括所述第一分配内存函数编号和所述第一分配函数分配内存大小。
在上述实现方式中,针对业务模块具体进行内存分配的分配内存函数进行内存分配信息的统计,并通过函数信息记录表进行直观列出,进一步提高了内存泄漏信息监控的直观性,并向用户提供了专业化、精确化的内存分配信息,提高了内存泄漏的确定精度和准确度。
可选地,所述信息获取模块还用于:获取第二业务模块释放内存时发送来的第二业务模块编号和模块分配内存指针;所述记录更新模块还用于:基于所述模块分配内存指针确定需要释放的模块释放内存大小;基于所述第二业务模块编号和所述模块释放内存大小在业务模块信息记录表中更新所述第二业务模块编号对应的第二业务模块内存分配记录,所述第二业务模块内存分配记录包括所述第二业务模块编号和第二模块分配内存大小。
在上述实现方式中,在业务模块对内存进行释放时,在业务模块信息记录表中更新其对应记录,对内存泄漏信息进行实时更新,保证了内存泄漏监控的实时性。
可选地,所述信息获取模块还用于:获取所述第二业务模块释放内存时发送来的第二分配内存函数编号和函数分配内存指针;所述记录更新模块还用于:基于所述函数分配内存指针确定需要释放的第二函数释放内存大小;基于所述第二分配内存函数编号和所述第二函数释放内存大小在函数信息记录表中更新所述第二分配内存函数编号对应的第二函数内存分配记录,所述第二函数内存分配记录包括所述第二分配内存函数编号和第二函数分配内存大小。
在上述实现方式中,在分配内存函数对内存进行释放时,在函数信息记录表中更新其对应记录,对内存泄漏信息进行实时更新,保证了内存泄漏监控的实时性。
可选地,所述信息获取模块还用于:获取所述第一业务模块分配内存时发送来的第一分配数据结构编号和第一数据结构分配内存大小,所述第一分配数据结构编号用于确定进行内存分配的数据结构;所述记录更新模块还用于:基于所述第一分配数据结构编号和所述第一数据结构分配内存大小在数据结构信息记录表中创建或更新所述第一分配数据结构编号对应的第一数据结构内存分配记录,所述第一数据结构内存分配记录包括所述第一分配数据结构编号和所述第一数据结构分配内存大小。可选地,建立所述第一分配数据结构编号和第一数据结构分配内存大小之间映射关系,后续第一数据结构分配内存大小可以直接从第一分配数据结构编号映射查询获得。
在上述实现方式中,针对业务模块具体进行内存分配的分配数据结构进行内存分配信息的统计,并通过数据结构信息记录表进行直观排列,进一步提高了内存泄漏信息监控的直观性,并向用户提供了专业化、精确化的内存分配信息,提高了内存泄漏的确定精度和准确度。
可选地,所述第一数据结构内存分配记录还包括第一数据结构分配次数,所述记录更新模块还用于:在所述数据结构信息记录表中创建或更新所述第一数据结构内存分配记录时,将所述第一数据结构分配次数加一。
在上述实现方式中,对分配数据结构进行内存分配的次数进行统计,有利于进行内存泄漏的判断。
可选地,所述信息获取模块还用于:获取所述第二业务模块释放内存时发送来的第二分配数据结构编号和数据结构分配内存指针;基于所述数据结构分配内存指针确定需要释放的第二数据结构释放内存大小;所述记录更新模块还用于:基于所述第二分配数据结构编号和所述第二数据结构释放内存大小在数据结构信息记录表中更新所述第二分配数据结构编号对应的第二数据结构内存分配记录,所述第二数据结构内存分配记录包括所述第二分配数据结构编号和第二数据结构分配内存大小。
在上述实现方式中,在分配内存函数对数据结构内存进行释放时,在数据结构信息记录表中更新其对应记录,对内存泄漏信息进行实时更新,保证了内存泄漏监控的实时性。
可选地,所述第二数据结构内存分配记录还包括第二数据结构分配次数,所述记录更新模块还用于:在所述数据结构信息记录表中更新所述第二数据结构内存分配记录时,将所述第二数据结构分配次数减一。
在上述实现方式中,基于分配和释放内存的实际情况对分配内存数据结构进行内存分配的次数进行统计,有利于进行内存泄漏的判断。
可选地,所述信息获取模块还用于:在将所述第一业务模块的内存分配至第三业务模块时,获取所述第一业务模块将内存分配至所述第三业务模块时发送来的所述第一业务模块编号、第三业务模块编号、第三模块分配内存大小;所述记录更新模块还用于:基于所述第一业务模块编号和所述第三模块分配内存大小在所述业务模块信息记录表中更新所述第一业务模块编号对应的第一业务模块内存分配记录;将所述第一模块分配次数减一;基于所述第三业务模块编号和所述第三模块分配内存大小在所述业务模块信息记录表中创建或更新所述第三业务模块编号对应的第三业务模块内存分配记录;将所述第三业务模块内存分配记录中的第三模块分配次数加一。
在上述实现方式中,通过业务模块分配内存泄漏信息的直接传输和显示,实现了某一业务模块通过另一业务模块间接分配内存时的实际内存分配情况的确定和显示,从而提高了内存泄漏监控的准确性。
本申请实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行上述任一内存泄漏信息处理方法。
本申请实施例还提供了一种存储介质,所述存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述任一内存泄漏信息处理方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种内存泄漏信息处理方法的流程示意图;
图2为本申请实施例提供的一种业务模块信息记录表的结构示意图;
图3为本申请实施例提供的一种模块内存释放步骤的流程示意图;
图4为本申请实施例提供的一种分配内存函数内存分配步骤的流程示意图;
图5为本申请实施例提供的一种函数信息记录表的结构示意图;
图6为本申请实施例提供的一种函数内存释放步骤的流程示意图;
图7为本申请实施例提供的一种内存泄漏信息呈现方式示意图;
图8为本申请实施例提供的一种内存泄漏信息处理装置的模块示意图。
图标:40-内存泄漏信息处理装置;41-信息获取模块;42-记录更新模块。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行描述。
经本申请人研究发现,路由器和交换机等嵌入式系统在开发过程中至少有两种版本,一种是调试版本,一种是发布版本,调试版本可以增加较多的手段定位系统中的各种问题,比如内存泄露可以记录所有分配者及其分配的内存泄漏信息等,但发布版本考虑到性能规格等因素,内存资源比较珍贵,需要尽量避免对内存的无谓消耗,将内存最大化用于实际的路由容量等指标运行上,以每块申请的内存块为单位进行信息记录及关联,通过记录分配的内存指针首地址进行信息记录和释放索引操作,内存指针数量在较复杂系统中一般数量比较大,记录需要花费较多额外内存资源,这是调试版本中常见的实现方式,信息很全,但管理信息额外消耗的内存量在发布版本中不可接受。因此在发布版本中,我们需要考虑一种即能解决业务模块内存泄露问题的基本定位,又不能消耗过多系统内存的方案,同时还可以向普通用户进行内存泄露信息的友好呈现。
为了实现上述目的,本申请实施例提供了一种内存泄漏信息处理方法。以下以分配数据结构编号都为0进行实现示例讲解,即只有业务模块编号和分配内存函数编号为例。请参考图1,图1为本申请实施例提供的一种内存泄漏信息处理方法的流程示意图。该内存泄漏信息处理方法的具体步骤可以如下:
步骤S11:获取第一业务模块分配内存时发送来的第一业务模块编号和第一模块分配内存大小。
本实施例中的业务模块指未独立进程化的特定协议业务的应用程序实体,比如NTP(Network Time Protocol,网络时间协议)业务模块。应当理解的是,同一个进程中可以运行多个业务模块。
可选地,本实施例中可以通过管理进程统一管理或显示业务进程的内部私有数据,其可以对用户提供CLI(Command-line Interface,命令行界面)针对某个具体的业务进程进行信息获取并展示。因此本实施例可以采用管理进程对业务模块分配内存的业务模块编号、模块分配内存大小信息进行获取。
业务模块编号作为业务模块的身份标识,用于确定业务模块的身份。例如,第一业务模块编号与第一业务模块对应,在接收到第一业务模块编号和第一模块分配内存大小时,就能够确定是第一业务模块进行第一模块分配内存大小的内存分配。
应当理解的是,在通过业务模块编号确定业务模块前,还需要对未独立进程化的业务模块进行编号分配,例如OSPF(Open Shortest Path First,开放式最短路径优先)业务模块设置为业务模块编号1,NTP业务模块设置为业务模块编号2,则管理进程能够根据业务模块编号为索引,确定业务模块,进行内存分配信息的管理。
可选地,对于已经独立进程化的业务模块,为了统一性,也可以进行业务模块编号的分配,只是在此类情况下一个进程就代表一个业务模块。
步骤S12:基于第一业务模块编号和第一模块分配内存大小在业务模块信息记录表中创建或更新第一业务模块编号对应的第一业务模块内存分配记录。
业务模块信息记录表可以是管理进程通过图像化或命令行形式对用户进行内存分配相关信息展示,不同的业务模块在业务模块信息记录表中单独被记录和显示。可选地,业务模块信息记录表中针对每个业务模块记录并显示其业务模块编号和模块分配内存大小。请参考图2,图2为本申请实施例提供的一种业务模块信息记录表的结构示意图,其中allocCount表示模块分配次数,allocTotalBytes表示模块分配内存大小,数字表示业务模块编号。
作为一种可选的实施方式,在实现业务模块编号及内存分配大小的记录和显示时,还可以对每个业务模块已分配内存(当前正在被使用)的次数进行统计,从而进一步提高排查内存泄漏的准确性和简便性,其具体步骤可以包括:在业务模块信息记录表中创建或更新第一业务模块内存分配记录时,将第一模块分配次数加一。
例如接收到业务模块OSPF进行内存分配时发送来的业务模块编号1及模块分配内存大小128字节。在业务模块信息记录表中没有业务模块编号1对应的业务模块内存分配记录时,创建业务模块OSPF对应的业务模块内存分配记录,其业务模块编号为1,模块分配内存大小为128字节,模块分配次数设置为1。在业务模块信息记录表中已存在业务模块编号1对应的业务模块内存分配记录时,将业务模块编号为1的业务模块内存分配记录中的模块分配内存大小加上128字节,模块分配次数加1。
应当理解的是,业务模块除了进行内存分配,在内存被使用完毕后,还需要对已分配的内存进行释放,请参考图3,图3为本申请实施例提供的一种模块内存释放步骤的流程示意图,该步骤具体可以如下:
步骤S13:获取第二业务模块释放内存时发送来的第二业务模块编号和模块分配内存指针。
第一业务模块和第二业务模块可以是同一业务模块,也可以是不同业务模块,本实施例中不对此作限定。
模块内存分配指针指向业务模块分配的内存地址,以确定该业务模块分配的内存及其内存大小。
步骤S14:基于模块分配内存指针确定需要释放的模块释放内存大小。
应当理解的是,模块释放内存大小为步骤S13中确定的内存大小。
步骤S15:基于第二业务模块编号和模块释放内存大小在业务模块信息记录表中更新第二业务模块编号对应的第二业务模块内存分配记录。
第二业务模块内存分配记录包括第二业务模块编号和第二模块分配内存大小。
继续以上述业务模块OSPF为例,在释放内存前该业务模块对应的业务模块内存分配记录中业务模块编号为1,模块分配内存大小为128字节,模块分配次数为3。接收到业务模块OSPF传输来的业务模块编号1、模块分配内存指针,基于业务模块编号1确定释放内存的业务模块为业务模块OSPF,基于模块分配内存指针指向的内存区域确定模块释放内存大小为60字节,计算出释放60字节内存后业务模块OSPF分配的内存还剩余68字节被占用,则在业务模块OSPF的业务模块内存分配记录中将模块分配内存大小更新为61字节,并将模块分配次数减1,将模块分配次数更新为2。
本实施例通过S11-S15以每个业务模块为单位,以业务模块的视角进行内存泄漏信息的获取,能够使用户直观地对内存的分配情况进行监控、分析,有利于内存泄漏情况的监控,且不需要记录额外的内存块调试信息、关联信息等,减少了需要记录的信息,提高了内存分配信息记录的高效性和准确性,比如系统中有200个业务模块,有400个分配内存函数,每个内存信息记录块可以最少消耗1个字长8字节(64位CPU系统)的内存,则总共只需要(200+400)*8=4800字节的内存消耗,每个业务模块可以最多消耗2个字长16字节的内存,则总共只需要(200+400)*16=9600字节的内存消耗。
作为一种可选的实施方式,为了用户获取更加准确的内存分配信息,本实施还基于分配内存函数的视角进行内存分配信息的获取,请参考图4,图4为本申请实施例提供的一种分配内存函数内存分配步骤的流程示意图,其具体步骤可以如下:
步骤S21:获取第一业务模块分配内存时发送来的第一分配内存函数编号和第一函数分配内存大小。
本实施例中的内存分配函数为用于动态内存分配的函数,例如malloc、realloc、calloc、alloca与aligned_alloc等函数。应当理解的是,同一业务模块中可以有多个内存分配函数进行内存分配。
分配内存函数编号作为分配内存函数的身份标识,用于确定分配内存函数的身份。例如,第一分配内存函数编号与第一分配内存函数对应,在接收到第一分配内存函数编号和第一函数分配内存大小时,就能够确定是第一分配内存函数进行第一函数分配内存大小的内存分配。
应当理解的是,在通过内存分配函数编号确定业务模块前,还需要对分配内存函数进行编号分配,例如,NTP业务模块的分配内存函数ospf_malloc1的分配内存函数编号为1,分配内存函数ospf_malloc2的分配内存函数编号为2,则管理进程能够根据分配内存函数编号为索引,确定业务模块,进行内存分配信息的管理。特别地,若分配内存函数编号为0,则表示该业务模块只有一个分配内存函数。
进一步地,业务模块在初始化时需要向管理进程注册分配内存函数编号和分配内存函数的函数名之间的对应关系,以在后续内存分配时通过内存分配函数编号确定对应的内存分配函数。
步骤S22:基于第一分配内存函数编号和第一函数分配内存大小在函数信息记录表中创建或更新第一分配内存函数编号对应的第一函数内存分配记录。
函数信息记录表可以是管理进程通过图像化或命令行形式对用户进行内存分配相关信息排列,不同的分配内存函数在函数信息记录表中单独被记录和显示。可选地,函数信息记录表中针对每个函数内存分配记录并显示其分配内存函数编号和函数分配内存大小。请参考图5,图5为本申请实施例提供的一种函数信息记录表的结构示意图,其中allocCount表示函数分配次数,allocTotalBytes表示函数分配内存大小,数字表示分配内存函数编号。
作为一种可选的实施方式,在实现分配内存函数编号及函数分配内存大小的记录、处理时,还可以对每个分配内存函数已分配内存(当前正在被使用)的次数进行统计,从而进一步提高排查内存泄漏的准确性和简便性,其具体步骤可以包括:在函数信息记录表中创建或更新第一函数内存分配记录时,将第一函数分配次数加一。
例如接收到分配内存函数ospf_malloc1进行内存分配时,其所属业务模块NTP发送来的分配内存函数编号1及函数分配内存大小32字节。在函数信息记录表中没有分配内存函数编号1对应的函数内存分配记录时,创建分配内存函数ospf_malloc1对应的函数内存分配记录,其分配内存函数编号为1,函数分配内存大小为32字节,函数分配次数设置为1。在函数信息记录表中已存在分配内存函数编号1对应的函数内存分配记录时,将分配内存函数编号为1的函数内存分配记录中的函数分配内存大小加上61字节,函数分配次数加1。
应当理解的是,分配内存函数除了进行内存分配,在内存被使用完毕后,还需要对已分配的内存进行释放,请参考图6,图6为本申请实施例提供的一种函数内存释放步骤的流程示意图,该步骤具体可以如下:
步骤S23:获取第二业务模块释放内存时发送来的第二分配内存函数编号和函数分配内存指针。
第一业务模块和第二业务模块可以是同一业务模块,也可以是不同业务模块,第一分配内存函数和第二分配内存函数可以是同一分配内存函数,也可以是不同分配内存函数,本实施例中不对此作限定。
函数分配内存指针指向分配内存函数分配的内存地址,以确定该分配内存函数分配的内存及其内存大小。
步骤S24:基于函数分配内存指针确定需要释放的第二函数释放内存大小。
应当理解的是,函数释放内存大小为步骤S23中确定的内存大小。
步骤S25:基于第二分配内存函数编号和第二函数释放内存大小在函数信息记录表中更新第二分配内存函数编号对应的第二函数内存分配记录。
第二函数内存分配记录包括第二分配内存函数编号和第二函数分配内存大小。
继续以上述分配内存函数ospf_malloc1为例,在释放内存前该分配内存函数对应的函数内存分配记录中分配内存函数编号为1,函数分配内存大小为64字节,函数分配次数为4。接收到业务模块NTP传送来的分配内存函数编号1、函数分配内存指针,基于分配内存函数编号1确定释放内存的分配内存函数为分配内存函数ospf_malloc1,基于函数分配内存指针指向的内存区域确定模块释放内存大小为24字节,计算出释放24字节内存后分配内存函数ospf_malloc1分配的内存还剩余40字节被占用,则在分配内存函数ospf_malloc1的函数内存分配记录中将函数分配内存大小更新为40字节,并将函数分配次数减1,将函数分配次数更新为3。
本实施例还通过步骤S21-S25,进一步地以分配内存函数为单位,以分配内存函数的视角进行内存泄漏信息的获取和处理,能够使用户更加精确的对内存分配情况进行分析和监控,进一步提高了内存泄漏监控的准确性。
在多业务模块的系统中进行内存分配时,还有可能出现内存迁移情况,即业务模块A分配了内存块,然后该内存块经过业务模块B,在业务模块B被实际分配的情况,为了对该情况下的内存分配情况进行准确、实时地记录和显示,本实施例还包括如下步骤:
步骤S31:在将第一业务模块的内存分配至第三业务模块时,获取第一业务模块将内存分配至第三业务模块时发送来的第一业务模块编号、第三业务模块编号、第三模块分配内存大小。
其中,第一业务模块和第二业务模块可以是系统中的任意业务模块。应当注意的,上述第三模块分配内存大小是第一业务模块在分配内存时需要分配的内存大小。
步骤S32:基于第一业务模块编号和第三模块分配内存大小在业务模块信息记录表中更新第一业务模块编号对应的第一业务模块内存分配记录。
步骤S33:将第一模块分配次数减一。
步骤S34:基于第三业务模块编号和第三模块分配内存大小在业务模块信息记录表中创建或更新第三业务模块编号对应的第三业务模块内存分配记录。
步骤S35:将第三业务模块内存分配记录中的第三模块分配次数加一。
本实施例通过步骤S31-S35,基于业务模块分配内存泄漏信息的直接传输和处理,实现了某一业务模块通过另一业务模块间接分配内存时的实际内存分配情况的确定,从而提高了内存泄漏监控的准确性。
进一步地,在分配数据结构编号不为0时,本实施例还可以对其数据结构分配内存的信息进行记录,其具体步骤可以如下:步骤S41:获取第一业务模块分配内存时发送来的第一分配数据结构编号和第一数据结构分配内存大小。
其中,数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
步骤S42:基于第一分配数据结构编号和第一数据结构分配内存大小在数据结构信息记录表中创建或更新第一分配数据结构编号对应的第一数据结构内存分配记录,第一数据结构内存分配记录包括第一分配数据结构编号和第一数据结构分配内存大小。
可选地,本实施例中还可以对数据结构进行内存分配的次数进行记录,具体可以包括:在数据结构信息记录表中创建或更新第一数据结构内存分配记录时,将第一数据结构分配次数加一。
应当理解的是,基于数据结构除了进行内存分配,在内存被使用完毕后,还需要对已分配的内存进行释放,步骤具体可以如下:
步骤S43:获取第二业务模块释放内存时发送来的第二分配数据结构编号和数据结构分配内存指针。
步骤S44:基于数据结构分配内存指针确定需要释放的第二数据结构释放内存大小。
步骤S45:基于第二分配数据结构编号和第二数据结构释放内存大小在数据结构信息记录表中更新第二分配数据结构编号对应的第二数据结构内存分配记录,第二数据结构内存分配记录包括第二分配数据结构编号和第二数据结构分配内存大小。
进一步地,本实施例同样可以对数据结构分配次数进行记录,其具体步骤可以包括:在数据结构信息记录表中创建或更新第一数据结构内存分配记录时,将第一数据结构分配次数加一。
进一步地,在进行内存泄漏信息的展示、呈现时,可以如图7所示,图7为本申请实施例提供的一种内存泄漏信息呈现方式示意图,其中,左侧的图表对应业务模块信息记录表,右侧的图表对应函数信息记录表,图表左侧的数字对应业务模块或分配内存函数的编号,图表内两行组成一个业务模块内存分配记录或函数内存分配记录,第一行为模块分配次数或函数分配次数,第二行为模块分配内存大小或函数分配内存大小。从而更加直观地向用户展示了内存分配情况,能够更加准确地对内存泄漏情况进行监控。
作为示例,业务模块编号定义可以如下:
#define SYSTEM_MODULE_A (1)
#define SYSTEM_MODULE_B (2)
……
业务模块编号对应的业务模块的名称可以如下,和业务模块编号一一对应:
#define SYSTEM_MODULE_A_NAME“module_a”
#define SYSTEM_MODULE_B_NAME“module_b”
……
则以业务模块为视角呈现的内存泄漏信息呈现可以如下:
module_namealloc count alloctatal bytes
module_a 4 80
module_b 6 120
……
作为示例,分配内存函数编号定义可以如下:
#define SYSTEM_FUNC_A(1)
#define SYSTEM_FUNC_B(2)
……
分配内存函数编号对应的分配内存函数的名称可以如下,和分配内存函数编号一一对应:
#define SYSTEM_FUNC_A_NAME“function_a”
#define SYSTEM_FUNC_B_NAME“function_b”
……
则以分配内存函数为视角的内存泄漏信息呈现可以如下:
function_namealloc count alloctatal bytes
function_a 2 40
function_b 5 60
……
为了更好地实现上述内存泄漏信息处理方法,本实施例还提供了一种内存泄漏信息处理装置40。请参考图8,图8为本申请实施例提供的一种内存泄漏信息处理装置的模块示意图。
内存泄漏信息处理装置40包括:
信息获取模块41,用于获取第一业务模块分配内存时发送来的第一业务模块编号和第一模块分配内存大小;
记录更新模块42,用于基于第一业务模块编号和第一模块分配内存大小在业务模块信息记录表中创建或更新第一业务模块编号对应的第一业务模块内存分配记录,第一业务模块内存分配记录包括第一业务模块编号和第一模块分配内存大小。
可选地,记录更新模块42还用于:在业务模块信息记录表中创建或更新第一业务模块内存分配记录时,将第一模块分配次数加一。
可选地,信息获取模块41还用于:获取第二业务模块释放内存时发送来的第二业务模块编号和模块分配内存指针;记录更新模块42还用于:基于模块分配内存指针确定需要释放的模块释放内存大小;基于第二业务模块编号和模块释放内存大小在业务模块信息记录表中更新第二业务模块编号对应的第二业务模块内存分配记录,第二业务模块内存分配记录包括第二业务模块编号和第二模块分配内存大小。
可选地,记录更新模块42还用于:在业务模块信息记录表中更新第二业务模块内存分配记录时,将第二模块分配次数减一。
可选地,信息获取模块41还用于:获取第一业务模块分配内存时发送来的第一分配内存函数编号和第一函数分配内存大小;记录更新模块42还用于:基于第一分配内存函数编号和第一函数分配内存大小在函数信息记录表中创建或更新第一分配内存函数编号对应的第一函数内存分配记录,第一函数内存分配记录包括第一分配内存函数编号和第一分配函数分配内存大小。
可选地,记录更新模块42还用于:在函数信息记录表中创建或更新第一函数内存分配记录时,将第一函数分配次数加一。
可选地,信息获取模块41还用于:获取第二业务模块释放内存时发送来的第二分配内存函数编号和函数分配内存指针;记录更新模块42还用于:基于函数分配内存指针确定需要释放的第二函数释放内存大小;基于第二分配内存函数编号和第二函数释放内存大小在函数信息记录表中更新第二分配内存函数编号对应的第二函数内存分配记录,第二函数内存分配记录包括第二分配内存函数编号和第二函数分配内存大小。
可选地,记录更新模块42还用于:在函数信息记录表中更新第二函数内存分配记录时,将第二函数分配次数减一。
可选地,信息获取模块41还用于:在将第一业务模块的内存分配至第三业务模块时,获取第一业务模块将内存分配至第三业务模块时发送来的第一业务模块编号、第三业务模块编号、第三模块分配内存大小;记录更新模块42还用于:基于第一业务模块编号和第三模块分配内存大小在业务模块信息记录表中更新第一业务模块编号对应的第一业务模块内存分配记录;将第一模块分配次数减一;基于第三业务模块编号和第三模块分配内存大小在业务模块信息记录表中创建或更新第三业务模块编号对应的第三业务模块内存分配记录;将第三业务模块内存分配记录中的第三模块分配次数加一。
可选地,信息获取模块41还用于:获取第一业务模块分配内存时发送来的第一分配数据结构编号和第一数据结构分配内存大小,第一分配数据结构编号用于确定进行内存分配的数据结构;记录更新模块42还用于:基于第一分配数据结构编号和第一数据结构分配内存大小在数据结构信息记录表中创建或更新第一分配数据结构编号对应的第一数据结构内存分配记录,第一数据结构内存分配记录包括第一分配数据结构编号和第一数据结构分配内存大小。
可选地,记录更新模块42还用于:在数据结构信息记录表中创建或更新第一数据结构内存分配记录时,将第一数据结构分配次数加一。
信息获取模块41还用于:获取第二业务模块释放内存时发送来的第二分配数据结构编号和数据结构分配内存指针;基于数据结构分配内存指针确定需要释放的第二数据结构释放内存大小;记录更新模块42还用于:基于第二分配数据结构编号和第二数据结构释放内存大小在数据结构信息记录表中更新第二分配数据结构编号对应的第二数据结构内存分配记录,第二数据结构内存分配记录包括第二分配数据结构编号和第二数据结构分配内存大小。
可选地,第二数据结构内存分配记录还包括第二数据结构分配次数,记录更新模块42还用于:在数据结构信息记录表中更新第二数据结构内存分配记录时,将第二数据结构分配次数减一。
本申请实施例还提供了一种电子设备,该电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行本实施例提供的任一内存泄漏信息处理方法。
应当理解是,该电子设备可以是个人电脑(personal computer,PC)、平板电脑、智能手机、个人数字助理(personal digital assistant,PDA)等具有逻辑计算功能的电子设备。
本申请实施例还提供了一种可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行本实施例提供的任一内存泄漏信息处理方法。
综上所述,本申请实施例提供了一种内存泄漏信息处理方法、装置、电子设备及存储介质,所述方法包括:获取第一业务模块分配内存时发送来的第一业务模块编号和第一模块分配内存大小;基于第一业务模块编号和第一模块分配内存大小在业务模块信息记录表中创建或更新第一业务模块编号对应的第一业务模块内存分配记录,第一业务模块内存分配记录包括第一业务模块编号和第一模块分配内存大小。
在上述实现方式中,通过业务模块信息记录表对分配内存的业务模块以及分配内存大小进行记录,基于业务模块一方进行内存泄漏信息的监控,不需要记录文件名等对内存泄漏信息监控作用较小的信息,无需消耗过多的系统内存,提高了内存泄漏信息处理的效率,且基于业务模块视角进行内存泄漏信息的获取和显示,能够使内存泄漏信息在对普通用户进行显示时更加直观。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的框图显示了根据本申请的多个实施例的设备的可能实现的体系架构、功能和操作。在这点上,框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图中的每个方框、以及框图的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。因此本实施例还提供了一种可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行区块数据存储方法中任一项所述方法中的步骤。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RanDOm Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (12)
1.一种内存泄漏信息处理方法,其特征在于,所述方法包括:
获取第一业务模块分配内存时发送来的第一业务模块编号和第一模块分配内存大小;
基于所述第一业务模块编号和所述第一模块分配内存大小在业务模块信息记录表中创建或更新所述第一业务模块编号对应的第一业务模块内存分配记录,所述第一业务模块内存分配记录包括所述第一业务模块编号和所述第一模块分配内存大小。
2.根据权利要求1所述的方法,其特征在于,所述第一业务模块内存分配记录还包括第一模块分配次数,所述方法还包括:
在所述业务模块信息记录表中创建或更新所述第一业务模块内存分配记录时,将所述第一模块分配次数加一。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述第一业务模块分配内存时发送来的第一分配内存函数编号和第一函数分配内存大小;
基于所述第一分配内存函数编号和所述第一函数分配内存大小在函数信息记录表中创建或更新所述第一分配内存函数编号对应的第一函数内存分配记录。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取第二业务模块释放内存时发送来的第二业务模块编号和模块分配内存指针;
基于所述模块分配内存指针确定需要释放的模块释放内存大小;
基于所述第二业务模块编号和所述模块释放内存大小在业务模块信息记录表中更新所述第二业务模块编号对应的第二业务模块内存分配记录,所述第二业务模块内存分配记录包括所述第二业务模块编号和第二模块分配内存大小。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取所述第二业务模块释放内存时发送来的第二分配内存函数编号和函数分配内存指针;
基于所述函数分配内存指针确定需要释放的第二函数释放内存大小;
基于所述第二分配内存函数编号和所述第二函数释放内存大小在函数信息记录表中更新所述第二分配内存函数编号对应的第二函数内存分配记录,所述第二函数内存分配记录包括所述第二分配内存函数编号和第二函数分配内存大小。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述第一业务模块分配内存时发送来的第一分配数据结构编号和第一数据结构分配内存大小;
基于所述第一分配数据结构编号和所述第一数据结构分配内存大小在数据结构信息记录表中创建或更新所述第一分配数据结构编号对应的第一数据结构内存分配记录,所述第一数据结构内存分配记录包括所述第一分配数据结构编号和所述第一数据结构分配内存大小。
7.根据权利要求6所述的方法,其特征在于,所述第一数据结构内存分配记录还包括第一数据结构分配次数,所述方法还包括:
在所述数据结构信息记录表中创建或更新所述第一数据结构内存分配记录时,将所述第一数据结构分配次数加一。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
获取所述第二业务模块释放内存时发送来的第二分配数据结构编号和数据结构分配内存指针;
基于所述数据结构分配内存指针确定需要释放的第二数据结构释放内存大小;
基于所述第二分配数据结构编号和所述第二数据结构释放内存大小在数据结构信息记录表中更新所述第二分配数据结构编号对应的第二数据结构内存分配记录,所述第二数据结构内存分配记录包括所述第二分配数据结构编号和第二数据结构分配内存大小。
9.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在将所述第一业务模块的内存分配至第三业务模块时,获取所述第一业务模块将内存分配至所述第三业务模块时发送来的所述第一业务模块编号、第三业务模块编号、第三模块分配内存大小;
基于所述第一业务模块编号和所述第三模块分配内存大小在所述业务模块信息记录表中更新所述第一业务模块编号对应的第一业务模块内存分配记录;
将所述第一模块分配次数减一;
基于所述第三业务模块编号和所述第三模块分配内存大小在所述业务模块信息记录表中创建或更新所述第三业务模块编号对应的第三业务模块内存分配记录;
将所述第三业务模块内存分配记录中的第三模块分配次数加一。
10.一种内存泄漏信息处理装置,其特征在于,所述装置包括:
信息获取模块,用于获取第一业务模块分配内存时发送来的第一业务模块编号和第一模块分配内存大小;
记录更新模块,用于基于所述第一业务模块编号和所述第一模块分配内存大小在业务模块信息记录表中创建或更新所述第一业务模块编号对应的第一业务模块内存分配记录,所述第一业务模块内存分配记录包括所述第一业务模块编号和所述第一模块分配内存大小。
11.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行权利要求1-9所述的任一内存泄漏信息处理方法。
12.一种存储介质,其特征在于,所述存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行权利要求1-9所述的任一内存泄漏信息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911128685.7A CN112817838A (zh) | 2019-11-18 | 2019-11-18 | 内存泄漏信息处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911128685.7A CN112817838A (zh) | 2019-11-18 | 2019-11-18 | 内存泄漏信息处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112817838A true CN112817838A (zh) | 2021-05-18 |
Family
ID=75852695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911128685.7A Pending CN112817838A (zh) | 2019-11-18 | 2019-11-18 | 内存泄漏信息处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817838A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1979427A (zh) * | 2005-12-08 | 2007-06-13 | 中兴通讯股份有限公司 | 嵌入式系统中自动监测内存泄漏与内存越界的方法 |
US20090013145A1 (en) * | 2007-07-02 | 2009-01-08 | Jes Kiran Chittigala | System and method for finding kernel memory leaks |
CN101763305A (zh) * | 2009-12-29 | 2010-06-30 | 青岛海信宽带多媒体技术有限公司 | 一种嵌入式系统内存泄露的检测方法 |
CN101908018A (zh) * | 2010-07-20 | 2010-12-08 | 北京海泰方圆科技有限公司 | 一种判断内存泄露的系统及方法 |
US20130054925A1 (en) * | 2011-08-24 | 2013-02-28 | Microsoft Corporation | Memory allocation tracking |
CN103218360A (zh) * | 2012-01-18 | 2013-07-24 | 中国石油天然气集团公司 | 工业实时数据库采用内存池技术实现动态内存管理的方法 |
CN106502880A (zh) * | 2016-09-20 | 2017-03-15 | 东软集团股份有限公司 | 一种内存泄漏调试方法及装置 |
CN109144872A (zh) * | 2018-08-20 | 2019-01-04 | 杭州迪普科技股份有限公司 | 内存泄漏的检测方法、装置、终端设备及可读存储介质 |
CN110347407A (zh) * | 2019-07-16 | 2019-10-18 | 武汉斗鱼鱼乐网络科技有限公司 | 一种获取内存占用量的方法、装置、计算机设备及介质 |
-
2019
- 2019-11-18 CN CN201911128685.7A patent/CN112817838A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1979427A (zh) * | 2005-12-08 | 2007-06-13 | 中兴通讯股份有限公司 | 嵌入式系统中自动监测内存泄漏与内存越界的方法 |
US20090013145A1 (en) * | 2007-07-02 | 2009-01-08 | Jes Kiran Chittigala | System and method for finding kernel memory leaks |
CN101763305A (zh) * | 2009-12-29 | 2010-06-30 | 青岛海信宽带多媒体技术有限公司 | 一种嵌入式系统内存泄露的检测方法 |
CN101908018A (zh) * | 2010-07-20 | 2010-12-08 | 北京海泰方圆科技有限公司 | 一种判断内存泄露的系统及方法 |
US20130054925A1 (en) * | 2011-08-24 | 2013-02-28 | Microsoft Corporation | Memory allocation tracking |
CN103218360A (zh) * | 2012-01-18 | 2013-07-24 | 中国石油天然气集团公司 | 工业实时数据库采用内存池技术实现动态内存管理的方法 |
CN106502880A (zh) * | 2016-09-20 | 2017-03-15 | 东软集团股份有限公司 | 一种内存泄漏调试方法及装置 |
CN109144872A (zh) * | 2018-08-20 | 2019-01-04 | 杭州迪普科技股份有限公司 | 内存泄漏的检测方法、装置、终端设备及可读存储介质 |
CN110347407A (zh) * | 2019-07-16 | 2019-10-18 | 武汉斗鱼鱼乐网络科技有限公司 | 一种获取内存占用量的方法、装置、计算机设备及介质 |
Non-Patent Citations (5)
Title |
---|
FENG QIN等: "SafeMem: exploiting ECC-memory for detecting memory leaks and memory corruption during production runs", 《11TH INTERNATIONAL SYMPOSIUM ON HIGH-PERFORMANCE COMPUTER ARCHITECTURE》, 7 March 2005 (2005-03-07), pages 1 - 12 * |
KENDYHJ9999: "在一个模块中分配的内存在另外一个模块释放", pages 1 - 4, Retrieved from the Internet <URL:https://blog.csdn.net/kendyhj9999/article/details/9746371> * |
张鹏: "嵌入式软件内存泄露检测方法研究", 《计算机工程与应用》, 9 April 2013 (2013-04-09), pages 56 - 59 * |
杨建旭: "如何判断内存是否泄露及何处泄露", pages 1 - 4, Retrieved from the Internet <URL:https://www.51cto.com/article/560556.html> * |
齐华军: "嵌入式linux系统中的内存泄漏的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 August 2006 (2006-08-15), pages 138 - 389 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10565104B2 (en) | System and method to manage and share managed runtime memory for JAVA virtual machine | |
US9430335B2 (en) | Optimizing the number and type of database backups to achieve a given recovery time objective (RTO) | |
US7474991B2 (en) | Method and apparatus for analyzing idle states in a data processing system | |
CN104182508B (zh) | 一种数据处理方法和数据处理装置 | |
KR20130055515A (ko) | 데이터 프로세싱 시스템의 메모리 사용을 추적하는 방법 | |
US10754556B2 (en) | Prioritization of virtual volumes to take offline in a thin provisioning system | |
US9262279B2 (en) | Classifying and monitoring database operations based on a cost of recovery | |
US9870278B2 (en) | Managing spaces in memory | |
CN112527599A (zh) | 智能监控方法、装置、电子设备及可读存储介质 | |
US8656224B2 (en) | Network fault management in busy periods | |
CN109684271B (zh) | 快照数据管理方法、装置、电子设备及机器可读存储介质 | |
US10771359B2 (en) | System capacity heatmap | |
CN112085535A (zh) | 资源计量计费方法、装置、集群及存储介质 | |
CN111475105A (zh) | 监控数据存储方法、设备、服务器及存储介质 | |
US20120174076A1 (en) | Systems and methods for profiling servers | |
CN109783321B (zh) | 监控数据管理方法、装置、终端设备 | |
EP4231602A1 (en) | Method and apparatus for acquiring private cloud container cluster gene information | |
US20140164594A1 (en) | Intelligent placement of virtual servers within a virtualized computing environment | |
CN109634524A (zh) | 一种数据处理守护进程的数据分区配置方法、装置及设备 | |
CN111858604B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN112817838A (zh) | 内存泄漏信息处理方法、装置、电子设备及存储介质 | |
US10585620B2 (en) | Storage monitoring system for monitoring components in a storage system in a distributed manner | |
US7124246B2 (en) | Storage management method and system | |
CN110879701A (zh) | 工作流可视化配置方法、服务器、系统及介质 | |
CN106293510A (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 |