CN113448735A - 内存泄露处理方法、装置和电子设备 - Google Patents
内存泄露处理方法、装置和电子设备 Download PDFInfo
- Publication number
- CN113448735A CN113448735A CN202110805414.1A CN202110805414A CN113448735A CN 113448735 A CN113448735 A CN 113448735A CN 202110805414 A CN202110805414 A CN 202110805414A CN 113448735 A CN113448735 A CN 113448735A
- Authority
- CN
- China
- Prior art keywords
- state
- memory
- target memory
- leakage
- early warning
- 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
Images
Classifications
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种内存泄露处理方法、装置和电子设备,属于通信技术领域。该方法包括:根据预设频率检测目标内存中不可回收的内存大小;根据检测的结果,调整所述目标内存的使用状态;在根据所述使用状态确定所述目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器;其中,所述预设频率与所述目标内存的使用状态对应的内存跨度相关联。
Description
技术领域
本申请属于通信技术领域,具体涉及一种内存泄露处理方法、装置和电子设备。
背景技术
内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。内存泄漏缺陷具有隐蔽性、积累性的特征,比其他内存非法访问错误更难检测。随着计算机应用需求的日益增加,应用程序的设计与开发也相应的日趋复杂,开发人员在程序实现的过程中处理的变量也大量增加,如何有效进行内存分配和释放,防止内存泄漏的问题变得越来越突出。
目前,slub内存泄漏检测的方法主要有kmemleak方法,通过记录内存申请函数的调用堆栈,并启动一个内核线程周期性地扫描已申请的内存是否被引用,以此判断是否有内存泄漏嫌疑。然而,该方法检测出会增加电子设备的负担,以及内存的消耗。
发明内容
本申请实施例的目的是提供一种内存泄露处理方法、装置和电子设备,能够解决现有内存泄露检测增加电子设备的负担以及内存的消耗的问题。
第一方面,本申请实施例提供了一种内存泄露处理方法,包括:
根据预设频率检测目标内存中不可回收的内存大小;
根据检测的结果,调整所述目标内存的使用状态;
在根据所述使用状态确定所述目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器;
其中,所述预设频率与所述目标内存的使用状态对应的内存跨度。相关联
第二方面,本申请实施例提供了一种内存泄露处理装置,包括:
检测模块,用于根据预设频率检测目标内存中不可回收的内存大小;
第一处理模块,用于根据检测的结果,调整所述目标内存的使用状态;
第二处理模块,用于在根据所述使用状态确定所述目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器;
其中,所述预设频率与所述目标内存的使用状态对应的内存跨度相关联。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
在本申请实施例中,在根据预设频率检测目标内存中不可回收的内存大小之后,由检测的结果来调整该目标内存的使用状态,从而在基于该使用状态确定该目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器,无需重复多次的检测,极大地降低了检测内存泄漏对电子设备带来的损耗。
附图说明
图1是申请实施例的内存泄露处理方法的流程示意图;
图2是object的内存结构示意图;
图3是Sunreclaim值与各个使用状态及检测频率的关系;
图4是状态变化示意图;
图5是进入预警状态的操作示意图;
图6是预警状态等待状态变化过程中的处理示意图;
图7是进入泄露状态的操作示意图;
图8是泄露状态等待状态变化过程中的处理示意图;
图9是本申请实施例的内存泄露处理装置的结构示意图;
图10是本申请实施例的电子设备的结构示意图;
图11是本申请另一实施例的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的内存泄露处理方法进行详细地说明。
如图1所示,本申请实施例的一种内存泄露处理方法,包括:
步骤101,根据预设频率检测目标内存中不可回收的内存大小相关联。其中,所述预设频率与所述目标内存的使用状态对应的内存跨度。
这里,预设频率是目标内存中不可回收的内存大小的检测频率。预设频率与目标内存的使用状态对应的内存跨度相关联,也就是,对于目标内存的使用状态,会基于其内存跨度预先设置一频率,以该频率来检测该目标内存中不可回收的内存大小,来反映目标内存的动态使用,适应不同使用状态的需求。可以理解的,不同的使用状态对应的内存跨度是不同的,即,检测频率也不同。
如此,本步骤中,会根据该预设频率来检测目标内存中不可回收的内存大小。
步骤102,根据检测的结果,调整所述目标内存的使用状态。
这里,基于上述步骤101检测的结果,能够调整该目标内存的使用状态,以便后续针对内存泄露进行处理。
步骤103,在根据所述使用状态确定所述目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器。
这里,基于步骤102调整的目标内存的使用状态,就可以进一步在目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器。
这样,本申请实施例的方法,电子设备在根据预设频率检测目标内存中不可回收的内存大小之后,由检测的结果来调整该目标内存的使用状态,从而在基于该使用状态确定该目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器,无需重复多次的检测,极大地降低了检测内存泄漏对电子设备带来的损耗。
应该知道的是,该实施例中,目标内存可以是slub内存,应用本申请实施例的方法对slub内存泄漏进行处理。当然,目标内存还可以是ion内存、虚拟内存等,对于其他内存泄漏(例如ion内存泄漏,虚拟内存泄漏等)也可应用本申请实施例的方法。下面,将以目标内存是slub内存为例对本申请实施例的方法的应用进行具体说明,其他内存也同样适用,在此不再一一列举。
还应该知道的是,本申请实施例中,基于泄露的发生可能,目标内存的使用状态分为三种:正常状态、预警状态和泄露状态。其中,为明确目标内存的使用状态,设置了预警阈值和泄露阈值。预警阈值和/或泄露阈值是根据电子设备的目标内存大小配置,并且,预警阈值比电子设备正常使用目标内存达到的最高值高,泄漏阈值需要比预警阈值高。例如,电子设备开机时Sunreclaim的值在300MB,正常使用过程中Sunreclaim的值会在300MB~1GB之间波动,则可以将预警阈值设置为1.5GB,泄漏阈值设置为1.8GB(即预警最大增量为300MB)。
此外,该实施例中,预设频率遵循一个准则:对应的使用状态下,内存跨度越大,检测频率越低。当然,该准则用于确定各个使用状态检测频率的比例系数,具体检测频率可以根据项目对性能的要求做调整。例如,正常状态的内存跨度是1200MB,其对应的预设频率为1200秒每次;预警状态的内存跨度是300MB,其对应的预设频率为300秒每次;泄漏状态是200MB,其对应的预设频率为200秒每次。
可选地,该实施例中,步骤102包括:
在所述目标内存当前处于正常状态,且所述不可回收的内存大小大于预警阈值的情况下,将所述目标内存的使用状态切换至预警状态;
或者,在所述目标内存当前处于正常状态,且所述不可回收的内存大小小于或等于所述预警阈值的情况下,将所述目标内存的使用状态保持在所述正常状态。
也就是说,电子设备会针对当前处于正常状态的slub内存,通过检测Sunreclaim的值(即不可回收的内存大小),在Sunreclaim的值大于预警阈值时,将slub内存的使用状态切换至预警状态;而在Sunreclaim的值小于或等于预警阈值时,将slub内存的使用状态保持在正常状态。
其中,检测Sunreclaim的值是以第一频率定期检测的,该第一频率是与slub内存的正常状态的内存跨度对应的预设频率。此时,slub内存在正常状态等待状态变化。这样,在正常状态,除了系统中多了一个监控进程(或内核线程),不会给系统带来其他消耗。
可选地,步骤102包括:
在所述目标内存当前处于预警状态,且满足预设条件的情况下,将所述目标内存的使用状态切换至泄露状态;其中,所述预设条件为:所述预警状态的维持时间小于第一时长,且所述不可回收的内存大小大于泄露阈值;或者,所述预警状态的维持时间大于或等于所述第一时长;
或者,在所述目标内存当前处于预警状态,且所述不可回收的内存大小在所述预警状态的维持时间达到所述第一时长之前,下降至小于所述预警阈值的情况下,将所述目标内存的使用状态切换至正常状态。
也就是说,电子设备会针对当前处于预警状态的slub内存,通过检测Sunreclaim的值和/或获取预警状态的维持时间,在预警状态的维持时间小于第一时长,且Sunreclaim的值大于泄露阈值时,或者,在预警状态的维持时间大于或等于第一时长时,将slub内存的使用状态切换至泄露状态;而在Sunreclaim的值在预警状态的维持时间达到第一时长之前,下降至小于预警阈值时,将slub内存的使用状态切换至正常状态。
其中,检测Sunreclaim的值是以第二频率定期检测的,该第二频率是与slub内存的预警状态的内存跨度对应的预设频率。此时,slub内存在预警状态等待状态变化。
这里,第一时长也称为预警最大时长,是预警状态下,第一次检测到第n+1次检查的时间间隔。例如,如果n为36,第二频率为300秒每次,则第一时长为300*36=10800秒=3小时。
其中,由达到泄漏阈值进入泄漏状态的方式适用于泄漏速度较快的情况,例如某个特定场景触发了一个连续泄漏内存的情况。此时如果没有达到泄漏阈值,而等待第一时长到达再切换状态,有可能还没等到状态变化就出现oom(out of memory),导致系统死机或重启。
由达到第一时长进入泄漏状态的方式适用于泄漏较慢的情况,或者泄漏内存不多的情况。由于预警状态下top m的镜像池是处于工作状态的,通过他们申请的内存会带来额外的内存消耗,所以此时不希望目标内存长时间保持预警状态,因此,即使未达到泄露阈值,达到第一时长目标内存也会进入泄漏状态,即使此时泄漏可能已经停止。
应该了解的是,该实施例中,目标内存进入预警状态,即有可能存在泄漏,而泄露状态,即泄漏已发生。故,可选地,该实施例还包括:
在所述目标内存的使用状态切换至第一状态的情况下,获取所述目标内存中各个缓存池的使用信息,所述第一状态包括预警状态或者述泄露状态;
根据所述各个缓存池的使用信息,确定目标缓存池;
对所述目标缓存池的镜像池添加标记,所述标记用于记录申请信息和释放信息;
其中,在所述第一状态为所述预警状态的情况下,所述各个缓存池的使用信息包括所述各个缓存池的当前使用信息;在所述第一状态为所述泄露状态的情况下,所述各个缓存池的使用信息包括所述各个缓存池在第二时长内变化的使用信息。
这里,各个缓存池(slab_cache)的使用信息可由系统内存信息中的slabinfo得到。其中,slabinfo包括每个缓存池的名称、设置大小、使用大小和使用次数等,故,使用信息可为缓存池的使用大小和使用次数,也可为计算使用大小和使用次数的乘积所得的缓存池的占用总量(内存占用总量)。
确定目标缓存池后,对其镜像池进行标记添加,通过标记记录申请信息和是否信息。例如,加上SLAB_STORE_USER这个标记(flag),使得镜像池能够记录每一个对象(object)的堆栈。添加标记后,每个object的内存结构如图2所示,在镜像池申请内存是会增加内存开销的,alloc/free track用来存储对应的object(分配出去实际给申请方使用的内存)的申请信息(申请堆栈信息)及释放信息(释放堆栈信息)。
当然,电子设备的目标内存第一次进入预警状态时,是没有创建任何镜像池的。所以第一次进入预警状态会对目标缓存池添加镜像标记,同时创建对应的镜像缓池。原本在被添加镜像标记后的缓存池里申请的内存会被镜像池所代理,代理分配内存的同时将申请内存的申请信息记录。
目标内存进入预警状态时,仅需获取各个缓存池的当前使用信息,如获取一次slabinfo。对应的,目标缓存池则是基于各个缓存池的使用信息,确定的泄露嫌疑最大的m个缓存池,即使用总量最大的前m个缓存池。当然,如果系统中没有实现slabinfo数据,可以自行遍历一遍每一个slab_cache(slab缓存池),筛选出占用总量最大的前m个的缓存池。
目标内存进入泄露状态时,需要获取的是各个缓存池在第二时长内变化的使用信息,如之前预警状态的使用信息和进入泄露状态时的使用信息之间的变化,或者,进入泄露状态时的使用信息和进入泄露状态后某一时间的使用信息之间的变化。对应的,目标缓存池则是基于各个缓存池的使用信息,确定的泄露嫌疑最大的m个缓存池,即增量最大的前m个缓存池。
还应该了解的是,对于目标内存进入泄露状态,可理解为目标内容发生泄露,因此,可选地,步骤103包括:
在所述目标内存的使用状态切换至泄露状态时,撤销所述镜像池的代理分配内存权,并立即遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器。
也就是说,一旦目标内存进入泄露状态,就撤销所有镜像池的代理分配内存权,并立即遍历当前所有镜像池,将获取到的堆栈信息转存到目标存储器。
此外,该实施例中,目标内存进入泄露状态,不同场景可能具有不同的泄露程度,所以,可选地,步骤103包括:
在所述目标内存的使用状态切换至泄露状态的情况下,根据泄露增量阈值和第三时长,确定所述泄露状态为快速泄露状态或者低速泄露状态;其中,所述第三时长由所述泄露状态对应的预设频率和预设检测次数确定;
在所述泄露状态为快速泄露状态的情况下,撤销所述镜像池的代理分配内存权,并立即遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器;
在所述泄露状态为低速泄露状态的情况下,撤销所述镜像池的代理分配内存权,并在满足预设条件的时机下遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器。
这里,泄露增量阈值也可理解为泄露最大增量阈值,同预警阈值和泄露阈值是根据电子设备的目标内存大小配置。在根据泄露增量阈值和第三时长,确定泄露状态为快速泄露状态或者低速泄露状态的步骤中,电子设备会针对当前处于泄露状态的slub内存,通过检测Sunreclaim的值,并结合第三时长来确定泄露状态是快速泄露状态还是低速泄露状态。
其中,检测Sunreclaim的值是第三频率定期检测的,第三频率是与slub内存的泄露状态的内存跨度对应的预设频率。第三频率可以根据项目对性能的要求做调整。例如,电子设备开机时Sunreclaim的值在300MB,正常使用过程中Sunreclaim的值会在300MB~1GB之间波动,则可以将泄露增量阈值设置为200MB。基于泄露增量阈值的变化,泄露状态的内存跨度也就是泄露增量阈值发生了变化,则第三频率会随之变化。
对于快速泄露状态的目标内存,如果继续泄漏,系统可能会很快oom,导致死机或重启,则撤销当前所有镜像池的代理分配内存权,并立即遍历当前所有镜像池,将获取到的堆栈信息转存到目标存储器,如存储器ROM,避免重启后数据丢失。对于低速泄露的目标内存,相对于快速泄露缺少转存的急迫性,则撤销当前所有镜像池的代理分配内存权,并在满足预设要求的时机下遍历当前所有镜像池,将获取到的堆栈信息转存到目标存储器,如存储器ROM即可。
其中,满足预设要求的时机可以是系统负载小于对应负载阈值的时机,以实现错峰使用系统资源,而且由于不会立即遍历,镜像池中正常使用的内存可能会被释放,新的内存申请也不会在镜像池中,所以镜像池中存储的堆栈信息为真实泄露的堆栈信息的概率更大。
具体的,根据所述泄露增量阈值和第三时长,确定所述泄露状态为快速泄露状态或者低速泄露状态,包括:
若达到第三时长前不可回收的内存大小大于该泄漏阈值,则当前的泄露状态为快速泄露状态;若达到第三时长前不可回收的内存大小小于或等于泄漏阈值,则当前的泄露状态为低速泄露状态。
该实施例中,堆栈信息可以是每个object的申请信息和释放信息。当然,撤销镜像池的代理分配内存权,会清除对应的缓存池的镜像标记,目标内存将返回正常状态。
可选地,该实施例中,还包括:
在所述目标内存进入泄露状态时,若检测到所述不可回收的内存大小在所述第三时长到达之前下降至小于所述预警阈值,则撤销镜像池的代理分配内存权,返回正常状态。
由于进入泄露状态后,Sunreclaim的值在第三时长到达之前下降至小于预警阈值,即泄露实际未发生,则能够撤销镜像池的代理分配内存权,返回正常状态。
可选地,该实施例中,步骤103之后,还包括:
上传并删除日志信息,其中所述日志信息包括当前所有镜像池的堆栈信息。
具体的,可择机上传并删除日志信息,例如监控进程检测到系统空闲且连接WiFi时上传并删除日志,当然开发人员也可以随时从设备中拉取日志文件。
而上传完成后,可继续保持该状态,直至检测到Sunreclaim的值降到预警阈值之下,重新回到正常状态。
可选地,该实施例中,步骤103之后,还包括:
显示所述电子设备的重启提醒信息;
响应于用户基于所述重启提醒信息的输入,执行重启或退出重启。
这里,在当前所有镜像池的堆栈信息转存到目标存储器之后,通过显示重启提醒信息,由用户触发重启或退出重启。重启后,会重置系统,内存泄漏并不会马上给系统带来问题,一般是需要持续一段时间的泄漏才会慢慢显现出问题。举个例子,用户使用一部存在内存泄漏的手机,泄漏得比较慢的话,正常使用一周可能不会出问题,假设在连续使用两周时泄漏的内存会达到一个比较大的量,使得系统卡顿,甚至发生oom。这种情况下只要用户在发生严重卡顿或者oom前重启设备,也就是由于内存泄漏带来的问题还没有出现就重启了系统,需要再等两周才会出现该问题。而且,重启设备会清除所创建的镜像池,也节约了一小部分内存。另外,由于已经完成了转储,重启设备并不影响异常日志的保存和上传。可有效避免游戏打到一半卡死了,或者正在编辑重要文件未保存时卡死。
具体的,该重启提醒信息可以是“异常日志采集完成,我们希望您重启一次设备,感谢您对xx的支持,本次采集的异常信息为,xxx,xxx。异常日志不涉及您任何隐私信息,是否愿意将异常日志上传给xx分析?”
当然,可以输入触发重启的用户,即积极配合提供日志信息的用户,还可进行回馈操作,例如发放优惠券、商城积分等,鼓励用户以后继续配合采集日志,分析问题。
此外,该实施例中,在目标内存的使用状态切换至预警状态时,可进行弹窗提醒或状态栏通知,提醒用户系统可能存在异常,征求用户意见,是否允许记录异常日志,在用户同意后执行后续处理,若用户未同意,则不再执行后续处理。其中,提醒用户的内容大致可以设置为:“系统提示:当前系统可能存在异常,为保证您和其他xx品牌的用户体验,我们希望能够通过你的设备采集不超过x小时(x为预警最大时长与泄漏最大时长的和)的系统内存使用信息。采集完成后会再次提醒您,为感谢您对我们创造更好的产品的支持,我们也将赠送您积分/优惠券…”。
同样的,在由其他状态重返正常状态时,还能够提醒用户本次异常日志记录完成,是否上传异常日志。
下面,结合8GB内存的电子设备,说明本申请实施例的方法的应用:
假设电子设备开机时Sunreclaim的值在300MB,正常使用过程中Sunreclaim的值会在300MB~1GB之间波动,则可以将预警阈值设置为1.5GB,泄漏阈值设置为1.8GB(即预警最大增量为300MB),泄漏增量设置为200MB。检测频率可以分别定位1200秒每次(第一频率),300秒每次(第二频率),200秒每次(第三频率)。本例中,Sunreclaim值与各个使用状态及检测频率的关系如图3所示。
系统初始化后,slub内存的状态变化如图4所示。首先,如步骤1,进入正常状态,在正常状态等待状态变化。这里,电子设备按照第一频率定期检测系统内存信息中Sunreclaim的值,判断Sunreclaim是否大于预警阈值,是则进入预警状态,否则保持在该状态。其中,进入预警状态时,如图5所示,获取当前系统内存信息中的slabinfo,确定当前泄露嫌疑最大的m个缓存池。之后,逐个检查这m个缓存池是否有对应的镜像池,若不存在,则将当前缓存池添加镜像标记,同时创建对应的镜像池以及对该镜像池添加标记;若存在,则直接对当前缓存池的镜像池添加标记。
步骤2,进入预警状态,在预警状态等待状态变化。等待过程中,如图6所示,按照第二频率定期检测系统内存信息中Sunreclaim的值,若该Sunreclaim的值在第一时长达到之前大于泄露阈值(即预警状态的维持时间小于第一时长,且Sunreclaim的值大于泄露阈值),或者,进入预警状态的时间大于或等于第一时长(即预警状态的维持时间大于或等于第一时长)时,进入泄露状态;若该Sunreclaim的值在达到第一时长之前下降至该预警阈值之下,重返正常状态。其中,进入泄露状态时,如图7所示,获取当前系统内存信息中的slabinfo,通过确定相较于预警状态获取的slabinfo的增量,确定增量最大的m个缓存池。之后,逐个检查这m个缓存池是否有对应的镜像池,若不存在,则将当前缓存池添加镜像标记,同时创建对应的镜像池以及对该镜像池添加标记;若存在,则直接对当前缓存池的镜像池添加标记。
步骤3,进入泄露状态,在泄露状态等待状态变化。等待过程中,根据泄露状态为快速泄露状态还是低速泄露状态,进行当前所有镜像池的堆栈信息转存到存储器ROM中。具体地,如图8所示,按照第三频率定期检测系统内存信息中Sunreclaim的值,若在达到第三时长前该Sunreclaim的值降至预警阈值之下,则撤销镜像池的代理分配内存权,返回正常状态;若Sunreclaim的值在达到第三时长前大于泄露增量阈值,则当前的泄漏状态为快速泄露状态;若该Sunreclaim的值在达到第三时长前未大于该泄露增量阈值,则当前的泄漏状态为低速泄露状态。
其中,对于快速泄露状态的目标内存,撤销当前所有镜像池的代理分配内存权,并立即遍历当前所有镜像池,将获取到的堆栈信息转存到存储器ROM;对于低速泄露状态的目标内存,撤销当前所有镜像池的代理分配内存权,并在满足预设要求的时机下遍历当前所有镜像池,将获取到的堆栈信息转存到存储器ROM。转存完成后,择机上传并删除日志信息。上传完成后继续保持泄露状态,直到检测到Sunreclaim的值降到预警阈值之下,重新回到正常状态。
综上,本申请实施例的方法,只在泄漏发生时进行镜像池堆栈信息转存,且只检测泄漏嫌疑最大的slab缓存池,而不是检测所有的缓存池,极大地降低了检测内存泄漏对系统带来的损耗。另外,会进行两轮缓存池的选择,对它标记并创建镜像,既考虑了整体内存用量,又考虑了异常时期的内存增量,确保不遗漏重要的可疑泄漏源。最后在慢速泄漏转储以及日志上传时机的选择上,采用择机转储/择机上传的方式,错峰使用系统资源,由于转储是在清除镜像标记之后,在镜像缓存池中正常申请的内存会被释放掉,因此延时转储能够减少日志中可疑泄漏源的数量,方便开发人员排查问题,同时还能够减少转储所需内存。
需要说明的是,本申请实施例提供的内存泄露处理方法,执行主体可以为内存泄露处理装置,或者该内存泄露处理装置中的用于执行内存泄露处理方法的控制模块。本申请实施例中以内存泄露处理装置执行内存泄露处理的方法为例,说明本申请实施例提供的内存泄露处理的装置。
如图9所示,本申请实施例的一种内存泄露处理装置,包括:
检测模块910,用于根据预设频率检测目标内存中不可回收的内存大小;
第一处理模块920,用于根据检测的结果,调整所述目标内存的使用状态;
第二处理模块930,用于在根据所述使用状态确定所述目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器;
其中,所述预设频率与所述目标内存的使用状态对应的内存跨度相关联。
可选地,所述第一处理模块包括:
第一处理子模块,用于在所述目标内存当前处于正常状态,且所述不可回收的内存大小大于预警阈值的情况下,将所述目标内存的使用状态切换至预警状态;
第二处理子模块,用于在所述目标内存当前处于正常状态,且所述不可回收的内存大小小于或等于所述预警阈值的情况下,将所述目标内存的使用状态保持在所述正常状态。
可选地,所述第一处理模块包括:
第三处理子模块,用于在所述目标内存当前处于预警状态,且满足预设条件的情况下,将所述目标内存的使用状态切换至泄露状态;其中,所述预设条件为:所述预警状态的维持时间小于第一时长,且所述不可回收的内存大小大于泄露阈值;或者,所述预警状态的维持时间大于或等于所述第一时长;
第四处理子模块,用于在所述目标内存当前处于预警状态,且所述不可回收的内存大小在所述预警状态的维持时间达到所述第一时长之前,下降至小于所述预警阈值的情况下,将所述目标内存的使用状态切换至正常状态。
可选地,所述装置还包括:
获取模块,用于在所述目标内存的使用状态切换至第一状态的情况下,获取所述目标内存中各个缓存池的使用信息,所述第一状态包括预警状态或者泄露状态;
确定模块,用于根据所述各个缓存池的使用信息,确定目标缓存池;
第三处理模块,用于对所述目标缓存池的镜像池添加标记,所述标记用于记录申请信息和释放信息;
其中,在所述第一状态为所述预警状态的情况下,所述各个缓存池的使用信息包括所述各个缓存池的当前使用信息;在所述第一状态为所述泄露状态的情况下,所述各个缓存池的使用信息包括所述各个缓存池在第二时长内变化的使用信息。
可选地,所述第二处理模块还用于:
在所述目标内存的使用状态切换至泄露状态的情况下,撤销所述镜像池的代理分配内存权,并立即遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器。
可选地,所述第二处理模块包括:
确定子模块,用于在所述目标内存的使用状态切换至泄露状态的情况下,根据泄露增量阈值和第三时长,确定所述泄露状态为快速泄露状态或者低速泄露状态;其中,所述第三时长由所述泄露状态对应的预设频率和预设检测次数确定;
第五处理子模块,用于在所述泄露状态为快速泄露状态的情况下,撤销所述镜像池的代理分配内存权,并立即遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器;
第六处理子模块,用于在所述泄露状态为低速泄露状态的情况下,撤销所述镜像池的代理分配内存权,并在满足预设条件的时机下遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器。
可选地,所述装置还包括:
第四处理模块,用于上传并删除日志信息,其中所述日志信息包括当前所有镜像池的堆栈信息。
本申请实施例的装置,只在泄漏发生时进行镜像池堆栈信息转存,且只检测泄漏嫌疑最大的slab缓存池,而不是检测所有的缓存池,极大地降低了检测内存泄漏对系统带来的损耗。另外,会进行两轮缓存池的选择,对它标记并创建镜像,既考虑了整体内存用量,又考虑了异常时期的内存增量,确保不遗漏重要的可疑泄漏源。最后在慢速泄漏转储以及日志上传时机的选择上,采用择机转储/择机上传的方式,错峰使用系统资源,由于转储是在清除镜像标记之后,在镜像缓存池中正常申请的内存会被释放掉,因此延时转储能够减少log中可疑泄漏源的数量,方便开发人员排查问题,同时还能够减少转储所需内存。
本申请实施例中的内存泄露处理装置可以是装置,也可以是电子设备中的部件、集成电路、或芯片。该装置可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,非移动电子设备可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的内存泄露处理装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的内存泄露处理装置能够实现图1至图8的方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选地,如图10所示,本申请实施例还提供一种电子设备1000,包括处理器1001,存储器1002,存储在存储器1002上并可在所述处理器1001上运行的程序或指令,该程序或指令被处理器1001执行时实现上述内存泄露处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
图11为实现本申请实施例的一种电子设备的硬件结构示意图。
该电子设备1100包括但不限于:射频单元1101、网络模块1102、音频输出单元1103、输入单元1104、传感器1105、显示单元1106、用户输入单元1107、接口单元1108、存储器1109、以及处理器1110等部件。
本领域技术人员可以理解,电子设备1100还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器1110逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图11中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,处理器1110,用于:
根据预设频率检测目标内存中不可回收的内存大小;
根据检测的结果,调整所述目标内存的使用状态;
在根据所述使用状态确定所述目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器;
其中,所述预设频率与所述目标内存的使用状态对应的内存跨度相关联。
电子设备
电子设备在根据预设频率检测电子设备目标内存中不可回收的内存大小之后,由检测的结果来调整该目标内存的使用状态,从而在基于该使用状态确定该目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器,无需重复多次的检测,极大地降低了检测内存泄漏对电子设备带来的损耗
可选地,处理器1110,还用于:
在所述目标内存当前处于正常状态,且所述不可回收的内存大小大于预警阈值的情况下,将所述目标内存的使用状态切换至预警状态;
或者,在所述目标内存当前处于正常状态,且所述不可回收的内存大小小于或等于所述预警阈值的情况下,将所述目标内存的使用状态保持在所述正常状态。
可选地,处理器1110,还用于:
在所述目标内存当前处于预警状态,且满足预设条件的情况下,将所述目标内存的使用状态切换至泄露状态;其中,所述预设条件为:所述预警状态的维持时间小于第一时长,且所述不可回收的内存大小大于泄露阈值;或者,所述预警状态的维持时间大于或等于所述第一时长;
或者,在所述目标内存当前处于预警状态,且所述不可回收的内存大小在所述预警状态的维持时间达到所述第一时长之前,下降至小于所述预警阈值的情况下,将所述目标内存的使用状态切换至正常状态。
可选地,处理器1110,还用于:
在所述目标内存的使用状态切换至第一状态的情况下,获取所述目标内存中各个缓存池的使用信息,所述第一状态包括预警状态或者泄露状态;
根据所述各个缓存池的使用信息,确定目标缓存池;
对所述目标缓存池的镜像池添加标记,所述标记用于记录申请信息和释放信息;
其中,在所述第一状态为所述预警状态的情况下,所述各个缓存池的使用信息包括所述各个缓存池的当前使用信息;在所述第一状态为所述泄露状态的情况下,所述各个缓存池的使用信息包括所述各个缓存池在第二时长内变化的使用信息。
可选地,处理器1110,还用于在所述目标内存的使用状态切换至泄露状态的情况下,撤销所述镜像池的代理分配内存权,并立即遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器。
可选地,处理器1110,还用于:
在所述目标内存的使用状态切换至泄露状态的情况下,根据泄露增量阈值和第三时长,确定所述泄露状态为快速泄露状态或者低速泄露状态;其中,所述第三时长由所述泄露状态对应的预设频率和预设检测次数确定;
在所述泄露状态为快速泄露状态的情况下,撤销所述镜像池的代理分配内存权,并立即遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器;
在所述泄露状态为低速泄露状态的情况下,撤销所述镜像池的代理分配内存权,并在满足预设条件的时机下遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器。
电子设备可选地,射频单元1101,用于上传日志信息,处理器1110,用于删除日志信息,其中所述日志信息包括当前所有镜像池的堆栈信息。
这样,检测泄漏嫌疑最大的slab缓存池,而不是检测所有的缓存池,极大地降低了检测内存泄漏对系统带来的损耗。另外,会进行两轮缓存池的选择,对它标记并创建镜像,既考虑了整体内存用量,又考虑了异常时期的内存增量,确保不遗漏重要的可疑泄漏源。最后在慢速泄漏转储以及日志上传时机的选择上,采用择机转储/择机上传的方式,错峰使用系统资源,由于转储是在清除镜像标记之后,在镜像缓存池中正常申请的内存会被释放掉,因此延时转储能够减少日志中可疑泄漏源的数量,方便开发人员排查问题,同时还能够减少转储所需内存。
应理解的是,本申请实施例中,输入单元1104可以包括图形处理器(GraphicsProcessing Unit,GPU)11041和麦克风11042,图形处理器11041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元1106可包括显示面板11061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板11061。用户输入单元1107包括触控面板11071以及其他输入设备11072。触控面板11071,也称为触摸屏。触控面板11071可包括触摸检测装置和触摸控制器两个部分。其他输入设备11072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。存储器1109可用于存储软件程序以及各种数据,包括但不限于应用程序和操作系统。处理器1110可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1110中。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述内存泄露处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述内存泄露处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台电子设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (16)
1.一种内存泄露处理方法,其特征在于,包括:
根据预设频率检测目标内存中不可回收的内存大小;
根据检测的结果,调整所述目标内存的使用状态;
在根据所述使用状态确定所述目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器;
其中,所述预设频率与所述目标内存的使用状态对应的内存跨度相关联。
2.根据权利要求1所述的方法,其特征在于,所述根据检测的结果,调整所述目标内存的使用状态,包括:
在所述目标内存当前处于正常状态,且所述不可回收的内存大小大于预警阈值的情况下,将所述目标内存的使用状态切换至预警状态;
或者,在所述目标内存当前处于正常状态,且所述不可回收的内存大小小于或等于所述预警阈值的情况下,将所述目标内存的使用状态保持在所述正常状态。
3.根据权利要求1所述的方法,其特征在于,所述根据检测的结果,调整所述目标内存的使用状态,包括:
在所述目标内存当前处于预警状态,且满足预设条件的情况下,将所述目标内存的使用状态切换至泄露状态;其中,所述预设条件为:所述预警状态的维持时间小于第一时长,且所述不可回收的内存大小大于泄露阈值;或者,所述预警状态的维持时间大于或等于所述第一时长;
或者,在所述目标内存当前处于预警状态,且所述不可回收的内存大小在所述预警状态的维持时间达到所述第一时长之前,下降至小于所述预警阈值的情况下,将所述目标内存的使用状态切换至正常状态。
4.根据权利要求1所述的方法,其特征在于,所述根据检测的结果,调整所述目标内存的使用状态之后,还包括:
在所述目标内存的使用状态切换至第一状态的情况下,获取所述目标内存中各个缓存池的使用信息,所述第一状态包括预警状态或者泄露状态;
根据所述各个缓存池的使用信息,确定目标缓存池;
对所述目标缓存池的镜像池添加标记,所述标记用于记录申请信息和释放信息;
其中,在所述第一状态为所述预警状态的情况下,所述各个缓存池的使用信息包括所述各个缓存池的当前使用信息;在所述第一状态为所述泄露状态的情况下,所述各个缓存池的使用信息包括所述各个缓存池在第二时长内变化的使用信息。
5.根据权利要求4所述的方法,其特征在于,所述在根据所述使用状态确定所述目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器中,包括:
在所述目标内存的使用状态切换至泄露状态的情况下,撤销所述镜像池的代理分配内存权,并立即遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器。
6.根据权利要求4所述的方法,其特征在于,所述在根据所述使用状态确定所述目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器,包括:
在所述目标内存的使用状态切换至泄露状态的情况下,根据泄露增量阈值和第三时长,确定所述泄露状态为快速泄露状态或者低速泄露状态;其中,所述第三时长由所述泄露状态对应的预设频率和预设检测次数确定;
在所述泄露状态为快速泄露状态的情况下,撤销所述镜像池的代理分配内存权,并立即遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器;
在所述泄露状态为低速泄露状态的情况下,撤销所述镜像池的代理分配内存权,并在满足预设条件的时机下遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器。
7.根据权利要求1所述的方法,其特征在于,所述在根据所述使用状态确定所述目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器之后,还包括:
上传并删除日志信息,其中所述日志信息包括当前所有镜像池的堆栈信息。
8.一种内存泄露处理装置,其特征在于,包括:
检测模块,用于根据预设频率检测目标内存中不可回收的内存大小;
第一处理模块,用于根据检测的结果,调整所述目标内存的使用状态;
第二处理模块,用于在根据所述使用状态确定所述目标内存发生泄漏的情况下,将当前所有镜像池的堆栈信息转存到目标存储器;
其中,所述预设频率与所述目标内存的使用状态对应的内存跨度相关联。
9.根据权利要求8所述的装置,其特征在于,所述第一处理模块包括:
第一处理子模块,用于在所述目标内存当前处于正常状态,且所述不可回收的内存大小大于预警阈值的情况下,将所述目标内存的使用状态切换至预警状态;
第二处理子模块,用于在所述目标内存当前处于正常状态,且所述不可回收的内存大小小于或等于所述预警阈值的情况下,将所述目标内存的使用状态保持在所述正常状态。
10.根据权利要求8所述的装置,其特征在于,所述第一处理模块包括:
第三处理子模块,用于在所述目标内存当前处于预警状态,且满足预设条件的情况下,将所述目标内存的使用状态切换至泄露状态;其中,所述预设条件为:所述预警状态的维持时间小于第一时长,且所述不可回收的内存大小大于泄露阈值;或者,所述预警状态的维持时间大于或等于所述第一时长;
第四处理子模块,用于在所述目标内存当前处于预警状态,且所述不可回收的内存大小在所述预警状态的维持时间达到所述第一时长之前,下降至小于所述预警阈值的情况下,将所述目标内存的使用状态切换至正常状态。
11.根据权利要求8所述的装置,其特征在于,还包括:
获取模块,用于在所述目标内存的使用状态切换至第一状态的情况下,获取所述目标内存中各个缓存池的使用信息,所述第一状态包括预警状态或者泄露状态;
确定模块,用于根据所述各个缓存池的使用信息,确定目标缓存池;
第三处理模块,用于对所述目标缓存池的镜像池添加标记,所述标记用于记录申请信息和释放信息;
其中,在所述第一状态为所述预警状态的情况下,所述各个缓存池的使用信息包括所述各个缓存池的当前使用信息;在所述第一状态为所述泄露状态的情况下,所述各个缓存池的使用信息包括所述各个缓存池在第二时长内变化的使用信息。
12.根据权利要求11所述的装置,其特征在于,所述第二处理模块还用于:
在所述目标内存的使用状态切换至泄露状态的情况下,撤销所述镜像池的代理分配内存权,并立即遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器。
13.根据权利要求11所述的装置,其特征在于,所述第二处理模块包括:
确定子模块,用于在所述目标内存的使用状态切换至泄露状态的情况下,根据泄露增量阈值和第三时长,确定所述泄露状态为快速泄露状态或者低速泄露状态;其中,所述第三时长由所述泄露状态对应的预设频率和预设检测次数确定;
第五处理子模块,用于在所述泄露状态为快速泄露状态的情况下,撤销所述镜像池的代理分配内存权,并立即遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器;
第六处理子模块,用于在所述泄露状态为低速泄露状态的情况下,撤销所述镜像池的代理分配内存权,并在满足预设条件的时机下遍历当前所有镜像池,将获取到的堆栈信息转存到所述目标存储器。
14.根据权利要求8所述的装置,其特征在于,还包括:
第四处理模块,用于上传并删除日志信息,其中所述日志信息包括当前所有镜像池的堆栈信息。
15.一种电子设备,其特征在于,包括处理器,存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-7任一项所述的内存泄露处理方法的步骤。
16.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1-7任一项所述的内存泄露处理方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110805414.1A CN113448735A (zh) | 2021-07-16 | 2021-07-16 | 内存泄露处理方法、装置和电子设备 |
PCT/CN2022/105496 WO2023284793A1 (zh) | 2021-07-16 | 2022-07-13 | 内存泄露处理方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110805414.1A CN113448735A (zh) | 2021-07-16 | 2021-07-16 | 内存泄露处理方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113448735A true CN113448735A (zh) | 2021-09-28 |
Family
ID=77816425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110805414.1A Pending CN113448735A (zh) | 2021-07-16 | 2021-07-16 | 内存泄露处理方法、装置和电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113448735A (zh) |
WO (1) | WO2023284793A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114296986A (zh) * | 2021-12-31 | 2022-04-08 | 北京字节跳动网络技术有限公司 | 内存泄漏定位方法、装置、介质和电子设备 |
CN115242462A (zh) * | 2022-06-30 | 2022-10-25 | 北京华顺信安科技有限公司 | 一种数据泄露检测方法 |
WO2023284793A1 (zh) * | 2021-07-16 | 2023-01-19 | 维沃移动通信有限公司 | 内存泄露处理方法、装置和电子设备 |
CN115794476A (zh) * | 2023-02-01 | 2023-03-14 | 荣耀终端有限公司 | 内核图形系统层内存的处理方法和终端设备 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115794045B (zh) * | 2023-02-07 | 2023-05-12 | 山东信息职业技术学院 | 基于大数据的软件开发应用数据处理方法 |
CN117112193A (zh) * | 2023-04-10 | 2023-11-24 | 荣耀终端有限公司 | 内存资源管理方法及电子设备 |
CN117112192B (zh) * | 2023-04-10 | 2024-04-12 | 荣耀终端有限公司 | 内存资源管理方法及电子设备 |
CN116578424B (zh) * | 2023-07-11 | 2023-09-26 | 麒麟软件有限公司 | 基于hmat的内存回收方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339533B (zh) * | 2007-07-04 | 2012-10-10 | 国际商业机器公司 | 基于分区的诊断Java系统的内存泄漏的方法及装置 |
CN101615143B (zh) * | 2008-06-27 | 2013-04-17 | 国际商业机器公司 | 用于内存泄漏诊断的方法和装置 |
CN104991847B (zh) * | 2015-07-03 | 2018-11-23 | 厦门美图移动科技有限公司 | 一种内存泄露自动化检测方法、装置及移动终端 |
CN107346285A (zh) * | 2017-05-26 | 2017-11-14 | 郑州云海信息技术有限公司 | 一种内存泄露检测方法及装置 |
CN111858112B (zh) * | 2019-04-26 | 2023-04-25 | 腾讯科技(深圳)有限公司 | 一种检测内存泄露的方法、客户端及服务器 |
CN111143100A (zh) * | 2019-12-09 | 2020-05-12 | 北京小米移动软件有限公司 | 内存泄露检测方法、装置、设备及存储介质 |
CN113448735A (zh) * | 2021-07-16 | 2021-09-28 | 维沃移动通信有限公司 | 内存泄露处理方法、装置和电子设备 |
-
2021
- 2021-07-16 CN CN202110805414.1A patent/CN113448735A/zh active Pending
-
2022
- 2022-07-13 WO PCT/CN2022/105496 patent/WO2023284793A1/zh unknown
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023284793A1 (zh) * | 2021-07-16 | 2023-01-19 | 维沃移动通信有限公司 | 内存泄露处理方法、装置和电子设备 |
CN114296986A (zh) * | 2021-12-31 | 2022-04-08 | 北京字节跳动网络技术有限公司 | 内存泄漏定位方法、装置、介质和电子设备 |
CN114296986B (zh) * | 2021-12-31 | 2024-05-10 | 北京字节跳动网络技术有限公司 | 内存泄漏定位方法、装置、介质和电子设备 |
CN115242462A (zh) * | 2022-06-30 | 2022-10-25 | 北京华顺信安科技有限公司 | 一种数据泄露检测方法 |
CN115794476A (zh) * | 2023-02-01 | 2023-03-14 | 荣耀终端有限公司 | 内核图形系统层内存的处理方法和终端设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2023284793A1 (zh) | 2023-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113448735A (zh) | 内存泄露处理方法、装置和电子设备 | |
US11822805B2 (en) | Method and terminal for reclaiming memory after freezing program | |
US9043631B2 (en) | Power supply control system, method, and computer program product | |
KR101835250B1 (ko) | 트랜잭셔널 메모리를 사용한 비인가 메모리 수정 및 액세스의 검출 | |
US9268542B1 (en) | Cache contention management on a multicore processor based on the degree of contention exceeding a threshold | |
US10445211B2 (en) | Logging trace data for program code execution at an instruction level | |
US9588844B2 (en) | Checkpointing systems and methods using data forwarding | |
CN108509260A (zh) | 线程识别处理方法、装置、计算机设备和存储介质 | |
US11042469B2 (en) | Logging trace data for program code execution at an instruction level | |
WO2014138411A1 (en) | System and method for tiered caching and storage allocation | |
EP3506114B1 (en) | Memory processing method and device and storage medium | |
US9632842B2 (en) | Exclusive access control method prohibiting attempt to access a shared resource based on average number of attempts and predetermined threshold | |
US20130081038A1 (en) | Multiprocessor computing device | |
CN102736928B (zh) | 快速唤醒计算机系统方法与计算机系统 | |
US20110041014A1 (en) | Program status detecting apparatus and method | |
CN113687942B (zh) | 检测方法、装置及电子设备 | |
CN115623557A (zh) | 找网频率确定方法、找网频率确定装置、和电子设备 | |
CN111090627B (zh) | 基于池化的日志存储方法、装置、计算机设备及存储介质 | |
CN112463374A (zh) | 一种内存管理方法、装置、设备及存储介质 | |
US9857864B1 (en) | Systems and methods for reducing power consumption in a memory architecture | |
CN109426563A (zh) | 一种进程管理方法及装置 | |
Li et al. | Ice: Collaborating memory and process management for user experience on resource-limited mobile devices | |
CN111767153B (zh) | 资源访问方法、装置及电子设备 | |
CN115033306B (zh) | 应用退出方法和装置 | |
CN115994032A (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 |