CN116841833A - 内存泄露检测方法、装置、电子设备及可读存储介质 - Google Patents
内存泄露检测方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN116841833A CN116841833A CN202311017859.9A CN202311017859A CN116841833A CN 116841833 A CN116841833 A CN 116841833A CN 202311017859 A CN202311017859 A CN 202311017859A CN 116841833 A CN116841833 A CN 116841833A
- Authority
- CN
- China
- Prior art keywords
- memory
- memory application
- application process
- target
- application
- 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 866
- 238000001514 detection method Methods 0.000 title claims abstract description 50
- 238000000034 method Methods 0.000 claims abstract description 486
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/3027—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开一种内存泄露检测方法、装置、电子设备及可读存储介质,属于电子设备技术领域,该方法包括:获取目标内存申请进程对应的内存申请量;在所述目标内存申请进程对应的内存申请量大于申请量阈值的情况下,获取所述目标内存申请进程的内存申请信息以及与所述目标内存申请进程相关联的内存使用进程的内存使用信息;输出所述目标内存申请进程的内存申请信息和所述内存使用进程的内存使用信息。
Description
技术领域
本申请属于计算机技术领域,具体涉及一种内存泄露检测方法、装置、电子设备及可读存储介质。
背景技术
随着计算机技术的不断发展,Linux系统内核引入了DAM-BUF(DirectMemoryAccess Buffer,直接内存访问缓冲区)内存共享机制,以解决多个设备(例如相机、图像处理器、显示器等)之间内存数据传输导致的耗时、以及重复申请多个内存块来存放相同大小的内存数据导致的内存资源紧张等问题。但是,在共享内存发生泄露的情况下,难以及时排查,导致系统低内存或死机等问题,影响系统的正常运行。
发明内容
本申请实施例的目的是提供一种内存泄露检测方法、装置、电子设备及可读存储介质,能够及时检测出共享内存泄露的情况,避免出现系统低内存或死机等问题,保证系统的正常运行。
第一方面,本申请实施例提供了一种内存泄露检测方法,所述方法包括:
获取目标内存申请进程对应的内存申请量;
在所述目标内存申请进程对应的内存申请量大于申请量阈值的情况下,获取所述目标内存申请进程的内存申请信息以及与所述目标内存申请进程相关联的内存使用进程的内存使用信息;
输出所述目标内存申请进程的内存申请信息和所述内存使用进程的内存使用信息。
第二方面,本申请实施例提供了一种内存泄露检测装置,所述装置包括:
第一获取模块,用于获取目标内存申请进程对应的内存申请量;
第二获取模块,用于在所述目标内存申请进程对应的内存申请量大于申请量阈值的情况下,获取所述目标内存申请进程的内存申请信息以及与所述目标内存申请进程相关联的内存使用进程的内存使用信息;
输出模块,用于输出所述目标内存申请进程的内存申请信息和所述内存使用进程的内存使用信息。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法。
在本申请实施例中,可以获取目标内存申请进程对应的内存申请量,在目标内存申请进程对应的内存申请量大于申请量阈值的情况下,获取目标内存申请进程的内存申请信息以及与目标内存申请进程相关联的内存使用进程的内存使用信息,输出目标内存申请进程的内存申请信息和内存使用进程的内存使用信息,能够帮助开发者及时排查内存泄漏的原因,以及时检测出共享内存泄露的情况,保证系统的正常运行。
附图说明
图1是本申请实施例提供的一种内存共享机制的示例图;
图2是本申请实施例提供的一种内存泄露检测方法的流程图;
图3是本申请实施例提供的一种内存泄露检测方法的示例图之一;
图4是本申请实施例提供的一种内存泄露检测方法的示例图之二;
图5是本申请实施例提供的一种内存泄露检测装置的结构框图;
图6是本申请实施例提供的一种电子设备的结构示意图;
图7是实现本申请各个实施例的一种电子设备的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
目前,为解决多个设备之间内存数据传输导致的耗时以及重复申请多个内存块来存放相同大小的内存数据导致的内存资源紧张等问题,Linux系统内核引入了DMA-BUF内存共享机制。但是,在共享内存发生泄露的情况下,难以及时排查,导致系统低内存或死机等问题,影响系统的正常运行。为了解决上述技术问题,本申请实施例提供了一种内存泄露检测方法、装置、电子设备及可读存储介质。
为了便于理解,下面结合附图,首先对本申请实施例的应用场景和涉及到的一些相关术语进行介绍。
一、相关术语
直接内存访问缓冲区(Direct Memory Access Buffer,DMA-BUF)共享内存是一种通过直接内存访问(Direct Memory Access,DMA)方式实现的共享内存机制,它可以让多个设备(例如相机、图像处理器、视频编解码器、显示器等)之间共享内存,从而避免了不必要的内存复制和数据传输,提高了系统的性能和效率。
共享内存的申请者(exporter),指的是申请DMA-BUF共享内存的设备对象。
内存申请进程,指的是exporter在申请DMA-BUF共享内存时所在的进程,exporter通过内存申请进程,向Linux内核的buddy系统申请一块物理内存,作为DMA-BUF共享内存。
共享内存的使用者(importer),指的是使用DMA-BUF共享内存的设备对象。
内存使用进程,指的是importer在使用DMA-BUF共享内存时所在的进程,importer通过内存使用进程,使用DMA-BUF共享内存。
内存访问缓冲区文件(Direct Memory Access Bufferfile,DMA-BUF file)是实现DMA-BUF共享内存的重要对象,将DMA-BUF file与DMA-BUF共享内存绑定,通过DMA-BUFfile的文件描述符(filedescriptor,fd)在不同进程之间传递来实现DMA-BUF共享内存。其中,DMA-BUFfile与普通文件区别在于:DMA-BUFfile的f_op成员存放dma_buf_fops操作接口,可以专门用于操作DMA-BUF共享内存,而普通文件的f_op成员存放的是普通的fop操作接口。
二、应用场景
DMA-BUF共享内存的工作原理:
DMA-BUF是为解决设备之间的内存共享和数据通信问题而引入的一种机制,目的是提升不同硬件设备之间处理数据的速度,同时节省系统内存占用。如图1所示,DMA-BUF内存共享原理为,按照图1中①~⑥的箭头顺序,首先exporter通过内存申请进程,从Linux内核的buddy系统中申请一块物理内存作为DMA-BUF共享内存,将该物理内存关联一个DMA-BUFfile后,返回该DMA-BUFfile的fd,之后exporter将DMA-BUFfile的fd传递给不同的importer,例如,importer0、importer1,……,importerN,N为大于1的整数,其中,importer0对应于内存使用进程0,importer1对应于内存使用进程1,importerN对应于内存使用进程N,内存使用进程0的文件描述符为fd0,内存使用进程1的文件描述符为fd1,内存使用进程N的文件描述符为fdN。
不同的importer会将DMA-BUFfile保存到对应内存使用进程的文件列表中,当importer使用DMA-BUF共享内存时,会从其对应内存使用进程的文件列表中获得DMA-BUFfile,从而最终获得所需的DMA-BUF共享内存。
DMA-BUF共享内存的泄露原因:
当DMA-BUFfile的fd在exporter和不同importer之间传递时,DMA-BUFfile在内存申请进程的文件列表和内存使用进程的文件列表中是惟一的,但是DMA-BUFfile的fd在内存申请进程和内存使用进程中可能是不同的。
针对以上情况,DMA-BUF共享内存的泄漏原因主要包括两点:1)exporter造成的DMA-BUF共享内存泄漏,体现在该exporter对应内存申请进程的文件列表中会保存大量的DMA-BUFfile,即exporter申请了大量物理内存作为DMA-BUF共享内存;2)importer造成的DMA-BUF共享内存泄漏,该importer对应的exporter申请了大量DMA-BUF共享内存,在该importer对应内存使用进程和exporter对应内存申请进程的文件列表中都会保存大量DMA-BUF file,即importer占用了大量DMA-BUF共享内存。
接下来对本申请实施例提供的内存泄露检测方法进行详细地说明。
需要说明的是,本申请实施例提供的内存泄露检测方法,可以应用于Linux系统中相机、图像处理器和显示器等图像处理显示模块使用DMA-BUF共享内存的场景,也可以应用于其他DMA-BUF共享内存的场景。
图2是本申请实施例提供的一种内存泄露检测方法的流程图,如图2所示,该方法可以包括以下步骤:步骤201、步骤202和步骤203;
在步骤201中,获取目标内存申请进程对应的内存申请量。
本申请实施例中,目标内存申请进程对应的内存申请量,指的是目标内存申请进程已申请到的DMA-BUF共享内存的内存总量。
本申请实施例中,目标内存申请进程可以为系统中所有的内存申请进程;或者,目标内存申请进程可以为系统中一个或者部分内存申请进程,例如,目标内存申请进程为系统中用户比较关注的一个或者多个内存申请进程。
本申请实施例中,获取目标内存申请进程对应的内存申请量,根据目标内存申请进程对应的内存申请量,确定目标内存申请进程对应的DMA-BUF共享内存是否发生泄露。
在一些实施例中,为了能够第一时间检测出DMA-BUF共享内存泄露问题,可以实时获取目标内存申请进程对应的内存申请量。
在一些实施例中,为了降低检测功耗,可以每间隔一段较短的时长,获取目标内存申请进程对应的内存申请量。
为了便于描述,后续可以采用“共享内存”代替“DMA-BUF共享内存”进行描述。
在步骤202中,在目标内存申请进程对应的内存申请量大于申请量阈值的情况下,获取目标内存申请进程的内存申请信息以及与目标内存申请进程相关联的内存使用进程的内存使用信息。
本申请实施例中,在目标内存申请进程对应的内存申请量大于申请量阈值的情况下,确定共享内存发生泄露,且目标内存申请进程与共享内存泄露有关,即目标内存申请进程为造成共享内存泄露的异常内存申请进程。由于目标内存申请进程与共享内存泄露有关,而目标内存申请进程关联了多个内存使用进程,因此目标内存申请进程关联的内存使用进程与共享内存泄露通常也是相关的,即内存泄露的原因通常不仅与exporter有关,可能还与importer有关,因此在确定系统中造成内存泄露的异常内存申请进程后,还需要确定异常内存申请进程关联的内存使用进程。此时,获取目标内存申请进程的内存申请信息以及与目标内存申请进程相关联的内存使用进程的内存使用信息,并输出,以方便开发者及时发现共享内存泄露并排查发生内存泄漏的原因。
本申请实施例中,在查找目标内存申请进程关联的内存使用进程时,首先遍历系统中任意一个进程的文件列表,若文件列表中存在DMA-BUFfile,且通过该DMA-BUFfile获取的DMA-BUF共享内存关联的内存申请进程标识与目标内存申请进程的进程标识相同,则判断该进程为目标内存申请进程关联的内存使用进程;其中,进程的标识可以为进程控制符(Process Identifier,PID)。
本申请实施例中,可以预先设置一个DMA-BUF共享内存的内存申请量阈值集合,其中,该内存申请量阈值集合中包括:针对系统中不同的DMA-BUF共享内存申请进程,分别设置不同的申请量阈值。由于不同的importer正常使用所需申请的DMA-BUF共享内存大小是不同,因此不同exporter内存申请进程对应的申请量阈值通常也是不同的。
例如,相机、图像处理器和显示器这三个importer关联的exporter分别对应内存申请进程A、B、C,设置内存申请进程A、B、C对应的申请量阈值依次为ThresholdA、ThresholdB和ThresholdC。
本申请实施例中,可以通过调试的方式,获取每个exporter在正常使用场景下的内存申请进程所申请的DMA-BUF共享内存的申请量峰值,将该申请量峰值确定为该exporter的内存申请进程对应的申请量阈值。
本申请实施例中,还可以设置不同importer的内存使用进程对应的使用量阈值。
本申请实施例中,目标内存申请进程的内存申请信息可以包括:目标内存申请进程的进程标识、目标内存申请进程申请的共享内存的大小、目标内存申请进程申请的共享内存的名称、目标内存申请进程申请的共享内存的地址。
本申请实施例中,内存使用进程的内存使用信息可以包括:内存使用进程的进程标识、内存使用进程使用的共享内存的大小、内存使用进程使用的共享内存的名称、内存使用进程使用的共享内存的地址。
可见,本申请实施例中,可以获取详细、全面的目标内存申请进程的内存申请信息以及与目标内存申请进程相关联的内存使用进程的内存使用信息,方便开发者直观、快捷地排查发生内存泄漏的原因。
在步骤203中,输出目标内存申请进程的内存申请信息和内存使用进程的内存使用信息。
本申请实施例中,通过exporter的内存申请进程,查找系统是否发生DMA-BUF共享内存泄漏,根据发生DMA-BUF共享内存泄露的exporter的内存申请进程,查找与DMA-BUF共享内存泄露相关的importer的内存使用进程,将该exporter的内存申请进程的内存申请信息及其关联的importer的内存使用进程的内存使用信息一起输出,以便开发者可以快速定位到DMA-BUF共享内存泄漏的具体模块。
在一些实施例中,为了便于开发者做排查,可以按照目标内存申请进程对应的内存申请量和其关联的各内存使用进程对应的内存使用量由大到小的顺序,依次输出目标内存申请进程的内存申请信息和内存使用进程的内存使用信息。也就是说,内存量(包括内存申请量和内存使用量)越大,其对应的输出信息(包括内存申请信息和内存使用信息)的输出顺序越靠前,内存量越小,其对应的输出信息的输出顺序越靠后。
由上述实施例可见,该实施例中,可以获取目标内存申请进程对应的内存申请量,在目标内存申请进程对应的内存申请量大于申请量阈值的情况下,获取目标内存申请进程的内存申请信息以及与目标内存申请进程相关联的内存使用进程的内存使用信息,输出目标内存申请进程的内存申请信息和内存使用进程的内存使用信息,能够帮助开发者及时排查内存泄漏的原因,以及时检测出共享内存泄露的情况,保证系统的正常运行。
在本申请提供的一些实施例中,所提供的内存泄露检测方法,在图2所示实施例的基础上,在上述步骤201之前,还可以包括以下步骤:步骤200;
在步骤200中,创建第一全局链表;对于已申请到共享内存的内存申请进程,根据内存申请进程的进程标识,将内存申请进程对应的内存申请量挂载到第一全局链表上。
本申请实施例中,第一全局链表用于实时挂载系统中已申请到DMA-BUF共享内存的各内存申请进程对应的内存申请量。
相应地,上述步骤201包括以下步骤:根据目标内存申请进程的进程标识,从第一全局链表中获取目标内存申请进程对应的内存申请量。
本申请实施例中,由于第一全局链表上挂载了系统中各内存申请进程已申请到的内存申请量,因此在执行针对DMA-BUF共享内存的泄漏检测时,可以实现快速地获取目标内存申请进程对应的内存申请量。
本申请实施例中,exporter对应的内存申请进程在每次申请DMA-BUF共享内存时,都会将该内存申请进程的进程标识与其所申请到的DMA-BUF共享内存的内存标识进行绑定,以便后续根据DMA-BUF共享内存查找其对应的内存申请进程;同时,还将申请到的DMA-BUF共享内存的内存总量,通过该内存申请进程标识对应的节点挂载到第一全局链表上。
本申请实施例中,对于已申请到共享内存的内存申请进程,若第一全局链表上存在内存申请进程的进程标识对应的节点,将内存申请进程对应的内存申请量挂载到该节点上;若第一全局链表上不存在内存申请进程的进程标识对应的节点,在第一全局链表中创建内存申请进程的进程标识对应的节点,将内存申请进程对应的内存申请量挂载到该节点上。
在一个例子中,如图3所示,exporter通过不同的内存申请进程(例如内存申请进程1、内存申请进程2、内存申请进程3,…)为不同的importer(例如importer1、importer2、importer3,…)申请DMA-BUF共享内存。
系统预先设置用于检测共享内存泄露的申请量阈值集合和第一全局链表,第一全局链表上实时挂载系统中的不同内存申请进程(例如内存申请进程1、内存申请进程2、内存申请进程3,…)已申请到的DMA-BUF共享内存的内存总量,申请量阈值集合中记录不同内存申请进程对应的申请量阈值(例如申请量阈值1、申请量阈值2、申请量阈值3,…)。在需要进行共享内存泄露检测时,可以从第一全局链表中获取各内存申请进程已申请到的DMA-BUF共享内存的内存总量,并将其与申请量阈值集合中对应的申请量阈值进行比较,对于大于申请量阈值的内存申请进程,确定该内存申请进程为造成共享内存泄露的异常内存申请进程。
可见,本申请实施例中,通过全局链表的方式,管理各内存申请进程已申请到的内存总量,在执行针对DMA-BUF共享内存的泄漏检测时,可以快速地获取每个内存申请进程已申请的内存总量,提高检测速度。此外,由于链表允许程序在运行时动态分配和释放内存、且链表大小不固定,因此很方便地进行动态扩展,提高了数据管理的灵活性。
在本申请提供的一些实施例中,所提供的内存泄露检测方法,在图2所示实施例的基础上,在上述步骤203之前,还可以增加以下步骤:步骤204、步骤205和步骤206;
在步骤204中,创建第二全局链表、第三全局链表和至少一个局部链表。
本申请实施例中,第二全局链表用于挂载目标内存申请进程的内存申请信息。
本申请实施例中,一个局部链表用于挂载与目标内存申请进程相关联的一个内存使用进程的内存使用信息,不同的内存使用进程对应不同的局部链表。第三全局链表用于挂载与目标内存申请进程相关联的各个内存使用进程对应的局部链表。
由于与目标内存申请进程相关联的内存使用进程的个数比较多,若直接挂载在第三全局链表,不利于管理和用户查找,本申请实施例中,采用局部链表的方式,挂载每个内存使用进程的内存使用信息,将所有的局部链表挂载到第三全局链表,可以方便管理和用户查找。
在步骤205中,解析目标内存申请进程的内存访问缓冲区文件,将解析出的第一文件信息挂载到第二全局链表上,其中,第一文件信息包含目标内存申请进程的内存申请信息。
本申请实施例中,可以通过异步线程,解析目标内存申请进程的文件列表中的每个DMA-BUF file,将解析出的文件信息挂载到第二全局链表上;其中,每个DMA-BUF file具有相应的共享内存。
在步骤206中,对于与目标内存申请进程相关联的每个内存使用进程,解析内存使用进程的内存访问缓冲区文件,将解析出的第二文件信息挂载到局部链表上,并将每个内存使用进程对应的局部链表挂载到第三全局链表上,其中,第二文件信息包含内存使用进程的内存使用信息。
本申请实施例中,可以通过异步线程,解析与目标内存申请进程相关联的每个内存使用进程的文件列表中的每个DMA-BUFfile,将解析出的文件信息,按照内存使用进程的不同挂载到不同的局部链表上,并将所有局部链表挂载到第三全局链表上。
相应地,上述步骤202可以包括以下步骤:步骤2021和步骤2022;
在步骤2021中,从第二全局链表中,获取目标内存申请进程的内存申请信息;
本申请实施例中,可以根据目标内存申请进程的进程标识,从第二全局链表中,获取目标内存申请进程的内存申请信息。
在步骤2022中,从第三全局链表中,获取与目标内存申请进程相关联的内存使用进程的内存使用信息。
本申请实施例中,可以根据内存使用进程的进程标识,从第三全局链表中,获取与目标内存申请进程相关联的内存使用进程的内存使用信息。
可见,本申请实施例中,通过全局链表和局部链表相互配合的方式,管理目标内存申请进程的内存申请信息及其所关联的内存使用进程的内存使用信息,在执行针对DMA-BUF共享内存的泄漏检测时,可以快速地获取目标内存申请进程的内存申请信息以及与目标内存申请进程相关联的内存使用进程的内存使用信息,提高检测速度。此外,由于链表允许程序在运行时动态分配和释放内存、且链表大小不固定,因此很方便地进行动态扩展,提高了数据管理的灵活性。
在本申请提供的一些实施例中,所提供的内存泄露检测方法,在上一实施例的基础上,在上述步骤203之前,还可以增加以下步骤:步骤207和步骤208;
在步骤207中,创建第四全局链表。
本申请实施例中,第四全局链表用于挂载目标内存申请进程对应的内存申请量和目标内存申请进程关联的每个内存使用进程分别对应的内存使用量。
在步骤208中,统计目标内存申请进程对应的内存申请量和目标内存申请进程关联的每个内存使用进程分别对应的内存使用量,并将统计结果挂载到第四全局链表上。
本申请实施例中,可以通过异步线程,统计目标内存申请进程对应的内存申请量和目标内存申请进程关联的每个内存使用进程分别对应的内存使用量,并将统计结果挂载到第四全局链表上。
相应地,上述步骤203可以包括以下步骤:步骤2031和步骤2032;
在步骤2031中,从第四全局链表中获取目标内存申请进程对应的内存申请量和目标内存申请进程关联的每个内存使用进程分别对应的内存使用量。
在步骤2032中,按照目标内存申请进程对应的内存申请量和目标内存申请进程关联的每个内存使用进程分别对应的内存使用量由大到小的顺序,依次输出目标内存申请进程的内存申请信息和内存使用进程的内存使用信息。
本申请实施例中,在输出目标内存申请进程的内存申请信息和内存使用进程的内存使用信息时,可以从第四全局链表中快速地获取目标内存申请进程对应的内存申请量和目标内存申请进程关联的每个内存使用进程分别对应的内存使用量,根据内存量(包括内存申请量和内存使用量)由大到小的顺序,对内存申请信息和内存使用信息依次进行输出展示,从而方便开发者直观地查找发生泄漏的具体模块。
最后,结合图4所示的示例图,对本申请实施例中内存信息的管理过程进行举例说明。
在一个例子中,如图4所示,内存申请进程A为造成共享内存泄露的异常内存申请进程,内存申请进程A关联的内存使用进程包括:内存使用进程1~内存使用进程N。
第二全局链表上挂载了内存申请进程A已申请到的各个DMA-BUF共享内存的信息,分别为DMA-BUF1内存申请信息、DMA-BUF2内存申请信息……,DMA-BUFM内存申请信息,M为大于1的整数。
第三全局链表上挂载了局部链表1~局部链表N,局部链表1上挂载了内存使用进程1使用的各个DMA-BUF共享内存的信息,分别为DMA-BUF1内存使用信息、DMA-BUF2内存使用信息,……,DMA-BUFX内存使用信息,X为大于1且小于M的整数。局部链表2上挂载了内存使用进程2使用的各个DMA-BUF共享内存的信息,分别为DMA-BUF1内存使用信息、DMA-BUF2内存使用信息,……,DMA-BUFY内存使用信息,Y为大于1且小于M的整数。局部链表N上挂载了内存使用进程N使用的各个DMA-BUF共享内存的信息,分别为DMA-BUF1内存使用信息、DMA-BUF2内存使用信息,……,DMA-BUFZ内存使用信息,Z为大于1且小于M的整数。
第四全局链表上挂载了内存申请进程A已申请到的DMA-BUF共享内存的内存总量size0、内存使用进程1使用的DMA-BUF共享内存的内存总量size1、内存使用进程2使用的DMA-BUF共享内存的内存总量size2,……,内存使用进程N使用的DMA-BUF共享内存的内存总量sizeN。
在需要进行DMA-BUF共享内存泄露检测时,可以从第二全局链表和第三全局链表中,获取内存申请进程A的内存申请信息和内存使用进程1~内存使用进程N的内存使用信息,在输出内存申请进程A的内存申请信息和内存使用进程1~内存使用进程N的内存使用信息时,可以按照第四全局链表上挂载的各内存总量由大到小的顺序,依次进行输出展示,从而方便开发者可以直观、快速地定位到发生泄漏的具体模块。
本申请实施例提供的内存泄露检测方法,执行主体可以为内存泄露检测装置。本申请实施例中以内存泄露检测装置执行内存泄露检测方法为例,说明本申请实施例提供的内存泄露检测装置。
图5是本申请实施例提供的一种内存泄露检测装置的结构框图,如图5所示,内存泄露检测装置500,可以包括:第一获取模块501、第二获取模块502和输出模块503;
第一获取模块501,用于获取目标内存申请进程对应的内存申请量;
第二获取模块502,用于在所述目标内存申请进程对应的内存申请量大于申请量阈值的情况下,获取所述目标内存申请进程的内存申请信息以及与所述目标内存申请进程相关联的内存使用进程的内存使用信息;
输出模块503,用于输出所述目标内存申请进程的内存申请信息和所述内存使用进程的内存使用信息。
由上述实施例可见,该实施例中,可以可以获取目标内存申请进程对应的内存申请量,在目标内存申请进程对应的内存申请量大于申请量阈值的情况下,获取目标内存申请进程的内存申请信息以及与目标内存申请进程相关联的内存使用进程的内存使用信息,输出目标内存申请进程的内存申请信息和内存使用进程的内存使用信息,能够帮助开发者及时排查内存泄漏的原因,以及时检测出共享内存泄露的情况,保证系统的正常运行。
可选地,作为一个实施例,所述内存泄露检测装置500,还可以包括:
第一创建模块,用于创建第一全局链表;
第一挂载模块,用于对于已申请到共享内存的内存申请进程,根据所述内存申请进程的进程标识,将所述内存申请进程对应的内存申请量挂载到所述第一全局链表上;
所述第一获取模块501,可以包括:
第一获取子模块,用于根据目标内存申请进程的进程标识,从所述第一全局链表中获取所述目标内存申请进程对应的内存申请量。
可选地,作为一个实施例,所述第一挂载模块,可以包括:
第一挂载子模块,用于对于已申请到共享内存的内存申请进程,在所述第一全局链表上存在所述内存申请进程的进程标识对应的节点的情况下,将所述内存申请进程对应的内存申请量挂载到所述节点上;
第二挂载子模块,用于在所述第一全局链表上不存在所述内存申请进程的进程标识对应的节点的情况下,在所述第一全局链表中创建所述内存申请进程的进程标识对应的节点,将所述内存申请进程对应的内存申请量挂载到所述节点上。
可选地,作为一个实施例,所述内存泄露检测装置500,还可以包括:
第二创建模块,用于创建第二全局链表、第三全局链表和至少一个局部链表;
第二挂载模块,用于解析所述目标内存申请进程的内存访问缓冲区文件,将解析出的第一文件信息挂载到所述第二全局链表上,其中,所述第一文件信息包含所述目标内存申请进程的内存申请信息;
第三挂载模块,用于对于与所述目标内存申请进程相关联的每个内存使用进程,解析所述内存使用进程的内存访问缓冲区文件,将解析出的第二文件信息挂载到所述局部链表上,并将每个所述内存使用进程对应的局部链表挂载到所述第三全局链表上,其中,所述第二文件信息包含所述内存使用进程的内存使用信息;
所述第二获取模块502,可以包括:
第二获取子模块,用于从所述第二全局链表中,获取所述目标内存申请进程的内存申请信息;
第三获取子模块,用于从所述第三全局链表中,获取与所述目标内存申请进程相关联的内存使用进程的内存使用信息。
可选地,作为一个实施例,所述内存泄露检测装置500,还可以包括:
第三创建模块,用于创建第四全局链表;
第四挂载模块,用于统计所述目标内存申请进程对应的内存申请量和所述目标内存申请进程关联的每个内存使用进程分别对应的内存使用量,并将统计结果挂载到所述第四全局链表上;
所述输出模块503,可以包括:
第四获取子模块,用于从所述第四全局链表中获取所述目标内存申请进程对应的内存申请量和所述目标内存申请进程关联的每个内存使用进程分别对应的内存使用量;
输出子模块,用于按照所述目标内存申请进程对应的内存申请量和所述目标内存申请进程关联的每个内存使用进程分别对应的内存使用量由大到小的顺序,依次输出所述目标内存申请进程的内存申请信息和所述内存使用进程的内存使用信息。
可选地,作为一个实施例,所述内存申请信息可以包括:目标内存申请进程的进程标识、所述目标内存申请进程申请的共享内存的大小、所述目标内存申请进程申请的共享内存的名称、所述目标内存申请进程申请的共享内存的地址;
所述内存使用信息可以包括:所述内存使用进程的进程标识、所述内存使用进程使用的共享内存的大小、所述内存使用进程使用的共享内存的名称、所述内存使用进程使用的共享内存的地址。
本申请实施例中的内存泄露检测装置可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(Mobile Internet Device,MID)、增强现实(Augmented Reality,AR)/虚拟现实(Virtual Reality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(Ultra-MobilePersonal Computer,UMPC)、上网本或者个人数字助理(Personal Digital Assistant,PDA)等,还可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(Personal Computer,PC)、电视机(Television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的内存泄露检测装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的内存泄露检测装置能够实现图2所示方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选地,如图6所示,本申请实施例还提供一种电子设备600,包括处理器601和存储器602,存储器602上存储有可在所述处理器601上运行的程序或指令,该程序或指令被处理器601执行时实现上述内存泄露检测方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
图7是实现本申请各个实施例的一种电子设备的硬件结构示意图。
该电子设备700包括但不限于:射频单元701、网络模块702、音频输出单元703、输入单元704、传感器705、显示单元706、用户输入单元707、接口单元708、存储器709、以及处理器710等部件。
本领域技术人员可以理解,电子设备700还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器710逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图7中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
处理器710,用于获取目标内存申请进程对应的内存申请量;在所述目标内存申请进程对应的内存申请量大于申请量阈值的情况下,获取所述目标内存申请进程的内存申请信息以及与所述目标内存申请进程相关联的内存使用进程的内存使用信息;输出所述目标内存申请进程的内存申请信息和所述内存使用进程的内存使用信息。
可见,本申请实施例中,可以获取目标内存申请进程对应的内存申请量,在目标内存申请进程对应的内存申请量大于申请量阈值的情况下,获取目标内存申请进程的内存申请信息以及与目标内存申请进程相关联的内存使用进程的内存使用信息,输出目标内存申请进程的内存申请信息和内存使用进程的内存使用信息,能够帮助开发者及时排查内存泄漏的原因,以及时检测出共享内存泄露的情况,保证系统的正常运行。
可选地,作为一个实施例,处理器710,还用于创建第一全局链表;
对于已申请到共享内存的内存申请进程,根据所述内存申请进程的进程标识,将所述内存申请进程对应的内存申请量挂载到所述第一全局链表上;
根据目标内存申请进程的进程标识,从所述第一全局链表中获取所述目标内存申请进程对应的内存申请量。
可选地,作为一个实施例,处理器710,还用于对于已申请到共享内存的内存申请进程,若所述第一全局链表上存在所述内存申请进程的进程标识对应的节点,将所述内存申请进程对应的内存申请量挂载到所述节点上;
若所述第一全局链表上不存在所述内存申请进程的进程标识对应的节点,在所述第一全局链表中创建所述内存申请进程的进程标识对应的节点,将所述内存申请进程对应的内存申请量挂载到所述节点上。
可选地,作为一个实施例,处理器710,还用于创建第二全局链表、第三全局链表和至少一个局部链表;
解析所述目标内存申请进程的内存访问缓冲区文件,将解析出的第一文件信息挂载到所述第二全局链表上,其中,所述第一文件信息包含所述目标内存申请进程的内存申请信息;
对于与所述目标内存申请进程相关联的每个内存使用进程,解析所述内存使用进程的内存访问缓冲区文件,将解析出的第二文件信息挂载到所述局部链表上,并将每个所述内存使用进程对应的局部链表挂载到所述第三全局链表上,其中,所述第二文件信息包含所述内存使用进程的内存使用信息;
从所述第二全局链表中,获取所述目标内存申请进程的内存申请信息;
从所述第三全局链表中,获取与所述目标内存申请进程相关联的内存使用进程的内存使用信息。
可选地,作为一个实施例,处理器710,还用于创建第四全局链表;
统计所述目标内存申请进程对应的内存申请量和所述目标内存申请进程关联的每个内存使用进程分别对应的内存使用量,并将统计结果挂载到所述第四全局链表上;
从所述第四全局链表中获取所述目标内存申请进程对应的内存申请量和所述目标内存申请进程关联的每个内存使用进程分别对应的内存使用量;
按照所述目标内存申请进程对应的内存申请量和所述目标内存申请进程关联的每个内存使用进程分别对应的内存使用量由大到小的顺序,依次输出所述目标内存申请进程的内存申请信息和所述内存使用进程的内存使用信息。
可选地,作为一个实施例,所述内存申请信息包括:目标内存申请进程的进程标识、所述目标内存申请进程申请的共享内存的大小、所述目标内存申请进程申请的共享内存的名称、所述目标内存申请进程申请的共享内存的地址;
所述内存使用信息包括:所述内存使用进程的进程标识、所述内存使用进程使用的共享内存的大小、所述内存使用进程使用的共享内存的名称、所述内存使用进程使用的共享内存的地址。
应理解的是,本申请实施例中,输入单元704可以包括图形处理器(GraphicsProcessing Unit,GPU)7041和麦克风7042,图形处理器7041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元706可包括显示面板7061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板7061。用户输入单元707包括触控面板7071以及其他输入设备7072中的至少一种。触控面板7071,也称为触摸屏。触控面板7071可包括触摸检测装置和触摸控制器两个部分。其他输入设备7072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
存储器709可用于存储软件程序以及各种数据。存储器709可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器709可以包括易失性存储器或非易失性存储器,或者,存储器709可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(ErasablePROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random AccessMemory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(SynchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器709包括但不限于这些和任意其它适合类型的存储器。
处理器710可包括一个或多个处理单元;可选地,处理器710集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器710中。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述内存泄露检测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述内存泄露检测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述内存泄露检测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (10)
1.一种内存泄露检测方法,其特征在于,所述方法包括:
获取目标内存申请进程对应的内存申请量;
在所述目标内存申请进程对应的内存申请量大于申请量阈值的情况下,获取所述目标内存申请进程的内存申请信息以及与所述目标内存申请进程相关联的内存使用进程的内存使用信息;
输出所述目标内存申请进程的内存申请信息和所述内存使用进程的内存使用信息。
2.根据权利要求1所述的方法,其特征在于,所述获取目标内存申请进程对应的内存申请量之前,还包括:
创建第一全局链表;
对于已申请到共享内存的内存申请进程,根据所述内存申请进程的进程标识,将所述内存申请进程对应的内存申请量挂载到所述第一全局链表上;
所述获取目标内存申请进程对应的内存申请量,包括:
根据目标内存申请进程的进程标识,从所述第一全局链表中获取所述目标内存申请进程对应的内存申请量。
3.根据权利要求2所述的方法,其特征在于,所述对于已申请到共享内存的内存申请进程,根据所述内存申请进程的进程标识,将所述内存申请进程对应的内存申请量挂载到所述第一全局链表上,包括:
对于已申请到共享内存的内存申请进程,若所述第一全局链表上存在所述内存申请进程的进程标识对应的节点,将所述内存申请进程对应的内存申请量挂载到所述节点上;
若所述第一全局链表上不存在所述内存申请进程的进程标识对应的节点,在所述第一全局链表中创建所述内存申请进程的进程标识对应的节点,将所述内存申请进程对应的内存申请量挂载到所述节点上。
4.根据权利要求1所述的方法,其特征在于,所述获取所述目标内存申请进程的内存申请信息以及与所述目标内存申请进程相关联的内存使用进程的内存使用信息之前,还包括:
创建第二全局链表、第三全局链表和至少一个局部链表;
解析所述目标内存申请进程的内存访问缓冲区文件,将解析出的第一文件信息挂载到所述第二全局链表上,其中,所述第一文件信息包含所述目标内存申请进程的内存申请信息;
对于与所述目标内存申请进程相关联的每个内存使用进程,解析所述内存使用进程的内存访问缓冲区文件,将解析出的第二文件信息挂载到所述局部链表上,并将每个所述内存使用进程对应的局部链表挂载到所述第三全局链表上,其中,所述第二文件信息包含所述内存使用进程的内存使用信息;
所述获取所述目标内存申请进程的内存申请信息以及与所述目标内存申请进程相关联的内存使用进程的内存使用信息,包括:
从所述第二全局链表中,获取所述目标内存申请进程的内存申请信息;
从所述第三全局链表中,获取与所述目标内存申请进程相关联的内存使用进程的内存使用信息。
5.根据权利要求1所述的方法,其特征在于,所述输出所述目标内存申请进程的内存申请信息和所述内存使用进程的内存使用信息之前,还包括:
创建第四全局链表;
统计所述目标内存申请进程对应的内存申请量和所述目标内存申请进程关联的每个内存使用进程分别对应的内存使用量,并将统计结果挂载到所述第四全局链表上;
所述输出所述目标内存申请进程的内存申请信息和所述内存使用进程的内存使用信息,包括:
从所述第四全局链表中获取所述目标内存申请进程对应的内存申请量和所述目标内存申请进程关联的每个内存使用进程分别对应的内存使用量;
按照所述目标内存申请进程对应的内存申请量和所述目标内存申请进程关联的每个内存使用进程分别对应的内存使用量由大到小的顺序,依次输出所述目标内存申请进程的内存申请信息和所述内存使用进程的内存使用信息。
6.根据权利要求1至5任一项所述的方法,其特征在于,
所述内存申请信息包括:目标内存申请进程的进程标识、所述目标内存申请进程申请的共享内存的大小、所述目标内存申请进程申请的共享内存的名称、所述目标内存申请进程申请的共享内存的地址;
所述内存使用信息包括:所述内存使用进程的进程标识、所述内存使用进程使用的共享内存的大小、所述内存使用进程使用的共享内存的名称、所述内存使用进程使用的共享内存的地址。
7.一种内存泄露检测装置,其特征在于,所述装置包括:
第一获取模块,用于获取目标内存申请进程对应的内存申请量;
第二获取模块,用于在所述目标内存申请进程对应的内存申请量大于申请量阈值的情况下,获取所述目标内存申请进程的内存申请信息以及与所述目标内存申请进程相关联的内存使用进程的内存使用信息;
输出模块,用于输出所述目标内存申请进程的内存申请信息和所述内存使用进程的内存使用信息。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第一创建模块,用于创建第一全局链表;
第一挂载模块,用于对于已申请到共享内存的内存申请进程,根据所述内存申请进程的进程标识,将所述内存申请进程对应的内存申请量挂载到所述第一全局链表上;
所述第一获取模块包括:
第一获取子模块,用于根据目标内存申请进程的进程标识,从所述第一全局链表中获取所述目标内存申请进程对应的内存申请量。
9.一种电子设备,其特征在于,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1至6任一项所述的内存泄露检测方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1至6任一项所述的内存泄露检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311017859.9A CN116841833A (zh) | 2023-08-11 | 2023-08-11 | 内存泄露检测方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311017859.9A CN116841833A (zh) | 2023-08-11 | 2023-08-11 | 内存泄露检测方法、装置、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116841833A true CN116841833A (zh) | 2023-10-03 |
Family
ID=88165378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311017859.9A Pending CN116841833A (zh) | 2023-08-11 | 2023-08-11 | 内存泄露检测方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116841833A (zh) |
-
2023
- 2023-08-11 CN CN202311017859.9A patent/CN116841833A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8196116B2 (en) | Tracing objects in object-oriented programming model | |
CN107038194B (zh) | 一种页面跳转方法和装置 | |
CN107748772B (zh) | 一种商标识别方法及装置 | |
CN115114071A (zh) | 一种内存分析方法、装置、设备及介质 | |
WO2024067348A2 (zh) | 内存分配器确定方法、装置、电子设备及存储介质 | |
CN116339818B (zh) | 代码变更类型的筛选方法、电子设备及可读存储介质 | |
CN116841833A (zh) | 内存泄露检测方法、装置、电子设备及可读存储介质 | |
WO2023284877A1 (zh) | 检测方法、装置及电子设备 | |
CN110908882A (zh) | 一种应用程序的性能分析方法、装置、终端设备及介质 | |
CN115062340A (zh) | 设备访问方法、接口处理方法及设备 | |
CN114238391A (zh) | 数据分页查询方法、装置、电子设备及存储介质 | |
CN114070892A (zh) | 数据传输方法和装置 | |
CN114385368A (zh) | 预写日志的刷写方法和装置 | |
CN112732542A (zh) | 信息处理方法、信息处理装置及终端设备 | |
CN113761410A (zh) | 数据处理方法及装置 | |
CN110825477A (zh) | 图形界面的加载方法、装置、设备及存储介质 | |
CN116680083A (zh) | 内存处理方法、装置、设备和存储介质 | |
CN116701142A (zh) | 数据获取方法、装置、设备和存储介质 | |
CN115994032A (zh) | 缓存管理方法、装置、电子设备及介质 | |
CN112650603B (zh) | 内存管理方法、装置、电子设备及存储介质 | |
CN116302807A (zh) | 对设备内存进行监控的系统、方法、电子设备及存储介质 | |
CN116954925A (zh) | 内存释放方法、装置、电子设备及介质 | |
CN117632703A (zh) | 内存泄漏的定位方法、装置、电子设备及可读存储介质 | |
CN117992621A (zh) | 多媒体对象处理方法、系统、电子设备及可读存储介质 | |
CN116954911A (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 |