CN110795239A - 应用内存泄露的检测方法及装置 - Google Patents
应用内存泄露的检测方法及装置 Download PDFInfo
- Publication number
- CN110795239A CN110795239A CN201910980256.6A CN201910980256A CN110795239A CN 110795239 A CN110795239 A CN 110795239A CN 201910980256 A CN201910980256 A CN 201910980256A CN 110795239 A CN110795239 A CN 110795239A
- Authority
- CN
- China
- Prior art keywords
- target application
- application
- state
- memory
- time
- 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/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种应用内存泄露的检测方法及装置,涉及电子信息领域,包括:获取目标应用的内存占用信息以及应用状态信息;当根据所述目标应用的内存占用信息确定需要触发内存检测操作时,根据已获取的目标应用的应用状态信息判断所述目标应用的当前状态是否为空闲状态;若所述目标应用的当前状态为空闲状态,控制所述目标应用生成内存镜像文件,以根据所述内存镜像文件检测所述目标应用是否发生内存泄露。该方式能够防止在应用运行过程中生成镜像文件所导致的应用卡死问题,进而能够及时检测线上运行环境中的内存泄露问题。
Description
技术领域
本发明实施例涉及电子信息领域,具体涉及一种应用内存泄露的检测方法及装置。
背景技术
内存泄露是指某些对象在生命周期结束的时候没有被回收,仍然占用内存的现象。内存泄露是应用开发过程中比较常见的问题,严重的内存泄露会大量消耗内存,对应用的运行造成严重影响,甚至发生内存溢出的错误。
在现有技术中,为了检测内存是否泄露,通常是由应用程序在遇到内存溢出错误时,生成与该应用程序相对应的内存镜像文件,并将该内存镜像文件上传至服务器,以供服务器根据内存镜像文件分析内存泄露情况。
但是,发明人在实现本发明的过程中发现,现有技术中的上述方式至少存在如下缺陷:由于生成内存镜像文件的过程非常耗时,并且,在生成内存镜像文件时需要耗费大量的***资源,因此,若应用此时正处于运行状态则会导致应用卡死,从而影响用户的正常使用。因此,上述检测方式通常无法在线上环境使用,只能在测试环境中使用,从而无法及时检测应用在线上环境中的内存泄露问题。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种应用内存泄露的检测方法及装置。
根据本发明实施例的一个方面,提供了一种应用内存泄露的检测方法,包括:
获取目标应用的内存占用信息以及应用状态信息;
当根据所述目标应用的内存占用信息确定需要触发内存检测操作时,根据已获取的目标应用的应用状态信息判断所述目标应用的当前状态是否为空闲状态;
若所述目标应用的当前状态为空闲状态,控制所述目标应用生成内存镜像文件,以根据所述内存镜像文件检测所述目标应用是否发生内存泄露。
可选的,所述根据已获取的目标应用的应用状态信息判断所述目标应用的当前状态是否为空闲状态包括:
根据所述应用状态信息判断所述目标应用的当前状态是否属于预设的实时交互状态;
若否,确定所述目标应用的当前状态为空闲状态。
可选的,所述根据所述应用状态信息判断所述目标应用的当前状态是否属于预设的实时交互状态包括:
根据目标应用中的各个功能模块的优先级,判断所述目标应用的当前状态是否属于预设的实时交互状态;其中,若目标应用中正在运行的功能模块的优先级高于预设级别,则确定目标应用的应用状态为实时交互状态;和/或,
根据目标应用中的各个功能模块的功能属性,判断所述目标应用的当前状态是否属于预设的实时交互状态;其中,若目标应用中正在运行的功能模块的功能属性为实时交互属性,则确定目标应用的应用状态为实时交互状态;和/或,
根据目标应用是否处于前台运行模式和/或是否处于全屏运行模式,判断所述目标应用的当前状态是否属于预设的实时交互状态。
可选的,所述获取目标应用的内存占用信息以及应用状态信息包括:
每当预设时间到达时,获取目标应用与该预设时间相对应的内存占用信息以及应用状态信息,并在历史数据库中存储目标应用与各个预设时间相对应的内存占用信息以及应用状态信息。
可选的,所述根据已获取的目标应用的应用状态信息判断所述目标应用的当前状态是否为空闲状态包括:根据所述历史数据库中存储的目标应用与各个预设时间相对应的应用状态信息,确定目标应用的应用状态信息与预设时间之间的关联关系,并根据所述关联关系判断所述目标应用的当前状态是否为空闲状态。
可选的,所述确定目标应用的应用状态信息与预设时间之间的关联关系,并根据所述关联关系判断所述目标应用的当前状态是否为空闲状态包括:
获取所述目标应用在预设时段内的应用状态信息;
统计所述目标应用在所述预设时段内处于空闲状态的频次,根据统计结果确定所述目标应用的当前状态是否为空闲状态。
可选的,所述预设时段包括:历史同期时段,且所述历史同期时段包括:各个时间单元内与当前时段相对应的时段,所述时间单元包括:自然日、星期、月份、和/或年份,且所述当前时段根据当前***时间确定;和/或,
所述预设时段包括:由当前时间以及预设起始时间确定的时段,其中,该预设起始时间与当前时间间隔预设时长。
可选的,所述历史数据库进一步用于存储目标应用与各个预设时间相对应的应用状态信息以及客户端标识之间的对应关系;
则所述根据所述历史数据库中存储的目标应用与各个预设时间相对应的应用状态信息,确定目标应用的应用状态信息与预设时间之间的关联关系,并根据所述关联关系判断所述目标应用的当前状态是否为空闲状态包括:
确定需要触发内存检测操作的目标应用所对应的客户端标识,从所述历史数据库中获取与所述需要触发内存检测操作的目标应用所对应的客户端标识相匹配的应用状态信息,以根据获取到的与所述客户端标识相匹配的应用状态信息判断所述目标应用的当前状态是否为空闲状态。
可选的,所述客户端标识包括:用户类型标识;则所述获取目标应用的内存占用信息以及应用状态信息进一步包括:
获取与各个用户类型相对应的目标应用的内存占用信息以及应用状态信息;其中,所述用户类型根据用户画像数据划分。
可选的,所述根据所述目标应用的内存占用信息确定需要触发内存检测操作包括:
获取所述历史数据库中已存储的目标应用与各个预设时间相对应的内存占用信息;
判断所述目标应用的内存占用信息是否呈上升趋势,和/或,判断所述目标应用的内存占用信息是否达到预设风险阈值;
若是,则确定需要触发内存检测操作。
根据本发明实施例的另一个方面,提供了一种应用内存泄露的检测装置,包括:
获取模块,适于获取目标应用的内存占用信息以及应用状态信息;
判断模块,适于当根据所述目标应用的内存占用信息确定需要触发内存检测操作时,根据已获取的目标应用的应用状态信息判断所述目标应用的当前状态是否为空闲状态;
检测模块,适于若所述目标应用的当前状态为空闲状态,控制所述目标应用生成内存镜像文件,以根据所述内存镜像文件检测所述目标应用是否发生内存泄露。
可选的,所述判断模块具体适于:
根据所述应用状态信息判断所述目标应用的当前状态是否属于预设的实时交互状态;
若否,确定所述目标应用的当前状态为空闲状态。
可选的,所述判断模块具体适于:
根据目标应用中的各个功能模块的优先级,判断所述目标应用的当前状态是否属于预设的实时交互状态;其中,若目标应用中正在运行的功能模块的优先级高于预设级别,则确定目标应用的应用状态为实时交互状态;和/或,
根据目标应用中的各个功能模块的功能属性,判断所述目标应用的当前状态是否属于预设的实时交互状态;其中,若目标应用中正在运行的功能模块的功能属性为实时交互属性,则确定目标应用的应用状态为实时交互状态;和/或,
根据目标应用是否处于前台运行模式和/或是否处于全屏运行模式,判断所述目标应用的当前状态是否属于预设的实时交互状态。
可选的,所述获取模块具体适于:
每当预设时间到达时,获取目标应用与该预设时间相对应的内存占用信息以及应用状态信息,并在历史数据库中存储目标应用与各个预设时间相对应的内存占用信息以及应用状态信息。
可选的,所述判断模块具体适于:根据所述历史数据库中存储的目标应用与各个预设时间相对应的应用状态信息,确定目标应用的应用状态信息与预设时间之间的关联关系,并根据所述关联关系判断所述目标应用的当前状态是否为空闲状态。
可选的,所述判断模块具体适于:
获取所述目标应用在预设时段内的应用状态信息;
统计所述目标应用在所述预设时段内处于空闲状态的频次,根据统计结果确定所述目标应用的当前状态是否为空闲状态。
可选的,所述预设时段包括:历史同期时段,且所述历史同期时段包括:各个时间单元内与当前时段相对应的时段,所述时间单元包括:自然日、星期、月份、和/或年份,且所述当前时段根据当前***时间确定;和/或,
所述预设时段包括:由当前时间以及预设起始时间确定的时段,其中,该预设起始时间与当前时间间隔预设时长。
可选的,所述历史数据库进一步用于存储目标应用与各个预设时间相对应的应用状态信息以及客户端标识之间的对应关系;
则所述判断模块具体适于:
确定需要触发内存检测操作的目标应用所对应的客户端标识,从所述历史数据库中获取与所述需要触发内存检测操作的目标应用所对应的客户端标识相匹配的应用状态信息,以根据获取到的与所述客户端标识相匹配的应用状态信息判断所述目标应用的当前状态是否为空闲状态。
可选的,所述客户端标识包括:用户类型标识;则所述判断模块进一步适于:
获取与各个用户类型相对应的目标应用的内存占用信息以及应用状态信息;其中,所述用户类型根据用户画像数据划分。
可选的,所述判断模块具体适于:
获取所述历史数据库中已存储的目标应用与各个预设时间相对应的内存占用信息;
判断所述目标应用的内存占用信息是否呈上升趋势,和/或,判断所述目标应用的内存占用信息是否达到预设风险阈值;
若是,则确定需要触发内存检测操作。
依据本发明实施例的再一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如上述的应用内存泄露的检测方法对应的操作。
依据本发明实施例的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述的应用内存泄露的检测方法对应的操作。
在本发明实施例提供的应用内存泄露的检测方法及装置中,能够在根据目标应用的内存占用信息判断出需要执行内存检测操作时,进一步根据应用状态信息判断目标应用的当前状态是否为空闲状态,并在目标应用的当前状态为空闲状态时,控制目标应用生成内存镜像文件,从而根据内存镜像文件检测目标应用是否发生内存泄露。由此可见,在本发明实施例中,一方面,能够根据目标应用的内存占用信息合理确定需要执行内存检测操作的时机,从而既能够及时检测内存泄露问题,又能够避免对应用运行造成不必要的影响;另一方面,能够根据获取到的应用状态信息判断目标应用是否处于空闲状态,并在空闲状态时生成内存镜像文件,从而防止在应用运行过程中生成镜像文件所导致的应用卡死问题,进而能够及时检测线上运行环境中的内存泄露问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例一提供的一种应用内存泄露的检测方法的流程图;
图2示出了本发明实施例二提供的一种应用内存泄露的检测方法的流程图;
图3示出了本发明实施例三提供的一种应用内存泄露的检测装置的结构图;
图4示出了本发明实施例五提供的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
图1示出了本发明实施例一提供的一种应用内存泄露的检测方法的流程图。如图1所示,该方法包括:
步骤S110:获取目标应用的内存占用信息以及应用状态信息。
具体实施时,可灵活通过各种方式获取上述信息,例如,可以在目标应用中集成用于获取上述信息的检测代码,进而通过集成在目标应用内部的检测代码获取上述信息;又如,还可以设置独立于目标应用的检测应用,以便于通过检测应用获取一个或多个目标应用的内存占用信息以及应用状态信息。
具体地,目标应用的内存占用信息用于表示目标应用当前所占用的内存大小。目标应用的应用状态信息用于表明目标应用的当前状态,例如,前台运行状态或后台运行状态、全屏运行状态或非全屏运行状态、实时交互状态或非实时交互状态等。总之,本发明不限定应用状态信息的具体内涵,只要能够表明目标应用的状态即可。
另外,本步骤既可以周期性执行,也可以在收到服务器发送的获取指令后执行,本发明对此不做限定。可选的,本步骤也可以通过周期性的定时任务定时触发。
步骤S120:当根据目标应用的内存占用信息确定需要触发内存检测操作时,根据已获取的目标应用的应用状态信息判断目标应用的当前状态是否为空闲状态。
其中,目标应用的内存占用信息能够反映目标应用当前所占用的内存大小,当目标应用当前所占用的内存大小超出预设阈值时,推测目标应用存在内存泄露风险,从而需要触发内存检测操作。该预设阈值可以根据实际业务情况设定。另外,由于步骤S110通常执行多次,从而能够获取到各个时间点所对应的内存占用信息,因此,还可以分析目标应用的内存占用信息随时间的变化情况,进而基于分析结果判断是否需要触发内存检测操作。由此可见,根据目标应用的内存占用信息能够合理确定需要触发内存检测操作的时机。
当确定需要触发内存检测操作时,为了不影响应用的正常运行,需要进一步根据应用状态信息判断目标应用的当前状态是否为空闲状态。其中,本步骤进行上述判断的目的主要在于防止在后续生成内存镜像文件的过程中导致应用卡死,因此,凡是在生成内存镜像文件的过程中不受影响的应用状态均能够理解为本实施例中的空闲状态。由此可见,本实施例中的空闲状态既可以是指目标应用未启动、或启动后未执行任何任务处理的状态,也可以是指目标应用正在执行实时性要求不高且占用***资源较少,从而在生成内存镜像文件的过程中不受影响的应用状态,如应用自检状态等。
步骤S130:若目标应用的当前状态为空闲状态,控制目标应用生成内存镜像文件,以根据内存镜像文件检测目标应用是否发生内存泄露。
具体地,当确定目标应用的当前状态为空闲状态时,说明此时生成内存镜像文件不会导致应用卡死的问题,相应地,控制目标应用生成内存镜像文件,具体可通过向目标应用发送镜像文件生成指令的方式实现,进而能够根据内存镜像文件检测目标应用是否发生内存泄露。当然,若目标应用的当前状态并非空闲状态,则暂缓执行内存镜像文件的生成操作,从而有效杜绝应用卡死的现象。
本实施例中的各个步骤既可以由客户端执行,也可以由服务器执行,本发明实施例对各个步骤的执行主体不做限定。
由此可见,在本发明实施例中,一方面,能够根据目标应用的内存占用信息合理确定需要执行内存检测操作的时机,从而既能够及时检测内存泄露问题,又能够避免对应用运行造成不必要的影响;另一方面,能够根据获取到的应用状态信息判断目标应用是否处于空闲状态,并在空闲状态时生成内存镜像文件,从而防止在应用运行过程中生成镜像文件所导致的应用卡死问题,进而能够及时检测线上运行环境中的内存泄露问题。
实施例二、
图2示出了本发明实施例二提供的一种应用内存泄露的检测方法的流程图。如图2所示,该方法包括:
步骤S210:每当预设时间到达时,获取目标应用与该预设时间相对应的内存占用信息以及应用状态信息,并在历史数据库中存储目标应用与各个预设时间相对应的内存占用信息以及应用状态信息。
具体实施时,可以按照预设间隔周期性触发步骤S210,例如,每隔30分钟触发一次步骤S210。或者,也可以在预设的***自检时段内单次或多次触发步骤S210。例如,可以将凌晨3点至3点半或凌晨3点至5点这一时段设定为***自检时段,并在该***自检时段内多次触发步骤S210。通过设置***自检时段,能够在应用较空闲的情况下执行本实施例中的各项操作,从而避免对用户造成影响,具体实施时,还可以预先向用户推送通知消息,以通知用户***检测时段的时间点,使用户尽量避免在***自检时段内操作应用。另外,该***自检时段还可以进一步根据预先存储的各个预设时间所对应的应用状态信息进行设定或调整,从而将应用较空闲的时段确定为***自检时段。
具体地,在多次触发步骤S210时,既可以按照相同的时间间隔周期性触发,也可以按照不等的时间间隔进行触发。当按照不等的时间间隔进行触发时,假设第N次触发步骤S210的时间点与第N-1次触发步骤S210的时间点之间的时间间隔为M,则第N+1次触发步骤S210的时间点与第N次触发步骤S210的时间点之间的时间间隔为M+X,其中,N为大于1的自然数,M为正数,X的取值既可以是正数也可以是负数。换言之,该不等的时间间隔可以随时间推迟而逐渐变短或逐渐变长,具体取决于业务需求。优选的,X的取值根据已获取到的内存占用信息的大小进行动态调整,即:X并非常量而是一个变量。例如,若连续多次获取到的内存占用信息的呈下降趋势或数据量不大于第一预设值,则增大X的取值,以延长获取间隔,从而降低***消耗;若连续多次获取到的内存占用信息的呈上升趋势或数据量大于第二预设值,则减小X的取值,以缩短获取间隔,便于及时检测内存异常情况。
可选的,在本实施例中,在客户端开启定时任务,通过该定时任务周期性触发步骤S210,相应地,每当定时任务被触发时,客户端通过向服务器上传心跳数据包的方式提供目标应用在本次定时任务所对应的预设时间的内存占用信息以及应用状态信息。客户端每次上传的心跳数据包中应包含以下信息项:
目标应用标识,用于确定当前监测的应用对象;
预设时间,用于确定本次心跳数据包的产生或传输时间;
目标应用的内存占用信息,用于确定目标应用在该预设时间的内存占用情况;
目标应用的应用状态信息,用于确定目标应用在该预设时间的应用使用情况;
客户端标识,用于标识上传该心跳数据包的客户端的相关信息,例如,可以是设备标识,也可以是用户标识。
在上述信息项中,预设时间、目标应用的内存占用信息以及目标应用的应用状态信息属于心跳数据包中必不可少的内容,以便于后续分析目标应用在各个时间点的内存占用情况以及应用状态。
另外,目标应用标识和客户端标识则属于可选的信息项。本实施例中待检测的目标应用的数量可以为一个或多个,当目标应用的数量为一个时,也可以省略目标应用标识。另外,当本实施例用于针对多个客户端上运行的目标应用提供检测功能时,由于各个客户端上运行目标应用的情况各不相同,因此,通过客户端标识区分各个客户端上传的心跳数据包中的应用状态信息,以便于分析目标应用在各个客户端上的运行情况。当然,若本发明仅针对单个客户端进行检测,则可以省略客户端标识。
步骤S220:根据目标应用的内存占用信息判断是否需要触发内存检测操作。
由于步骤S210周期性执行,因此,每次获取到目标应用的内存占用信息后,都需要根据当前已获取到的内存占用信息判断是否需要触发内存检测操作。若判断结果为是,则执行步骤S230;若判断结果为否,则继续等待下一轮内存占用信息,并在获取到下一轮内存占用信息后重复进行上述判断,依此循环。
具体判断时,可以根据各次获取到的内存占用信息判断目标应用是否存在内存泄露风险,并在判断出存在内存泄露风险时确定需要触发内存检测操作。具体地,目标应用的内存占用信息包括目标应用所占用的全部内存大小及全部内存区域、以及目标应用中的各个进程所占用的局部内存大小及局部内存区域。在本实施例中,主要根据目标应用的内存占用量判断是否存在泄漏风险。
在一种可选的实现方式中,通过以下方式进行判断:首先,获取历史数据库中已存储的目标应用与各个预设时间相对应的内存占用信息;然后,判断目标应用的内存占用信息是否呈上升趋势;和/或,判断目标应用的内存占用信息是否达到预设风险阈值;若是,则确定需要触发内存检测操作。
具体地,在根据上升趋势进行判断时,根据各次获取到的内存占用信息中包含的预设时间的时间标识,能够绘制内存占用曲线图,若根据该内存占用曲线图确定近期内目标应用的内存占用量呈上升趋势且上升幅度大于预设幅度阈值,则确定需要触发内存检测操作。在根据预设风险阈值进行判断时,若目标应用的内存占用量达到预设风险阈值,则确定需要触发内存检测操作。其中,预设风险阈值可以根据实际业务情况进行设定并调整。另外,预设风险阈值既可以是一个对应于目标应用的全部内存占用量的应用全局阈值,也可以是多个分别对应于目标应用中的各个进程的应用进程阈值,本发明对此不做限定。
发明人在实现本发明的过程中发现,在线上环境中执行内存检测操作的技术难点在于:无法准确确定内存泄露的检测操作的执行时机。换言之,由于本实施例需要在目标应用运行过程中动态执行内存泄露的检测操作,因此,必须合理确定检测操作的执行时机:若在目标应用的内存占用量很少的情况下频繁触发内存泄露的检测操作,势必会对应用的正常运行造成影响;反之,若在目标应用已经出现内存溢出后再触发内存泄露的检测操作,又势必会产生滞后性问题,进而影响业务功能的正常使用。为了解决上述技术问题,在本实施例中,根据各次获取到的目标应用的内存占用信息周期性判断是否需要触发内存检测操作,从而使检测操作的执行时机更加合理,既能够避免在内存占用量少的情况下频繁检测所导致的影响应用运行的问题,又能够在内存溢出前及时发现问题并处理。
步骤S230:当确定需要触发内存检测操作时,根据已获取的目标应用的应用状态信息判断目标应用的当前状态是否为空闲状态。
由于本实施例中的空闲状态主要是指不受内存镜像文件的生成过程影响的状态,因此,在本实施例中,可以预先设置实时交互状态以及非实时交互状态,并将实时交互状态等同于非空闲状态,将非实时交互状态等同于空闲状态。相应地,根据应用状态信息判断目标应用的当前状态是否属于预设的实时交互状态;若否,确定目标应用的当前状态为空闲状态。
在一种可选的实现方式中,根据目标应用中的各个功能模块的优先级,判断目标应用的当前状态是否属于预设的实时交互状态;其中,若目标应用中正在运行的功能模块的优先级高于预设级别,则确定目标应用的应用状态为实时交互状态。具体地,可以分别针对目标应用中的各个功能模块设置优先级,具体可以根据各个功能模块的重要性、使用频率、业务功能进行设定。相应地,确定目标应用中正在运行的各个功能模块的优先级,若存在优先级高于预设级别的功能模块,则确定目标应用的应用状态为实时交互状态。
在又一种可选的实现方式中,根据目标应用中的各个功能模块的功能属性,判断目标应用的当前状态是否属于预设的实时交互状态;其中,若目标应用中正在运行的功能模块的功能属性为实时交互属性,则确定目标应用的应用状态为实时交互状态。具体地,预先将目标应用中的各个功能模块的功能属性划分为实时交互属性以及非实时交互属性。其中,实时交互属性的功能模块主要用于实现具有如下特征的业务操作:实时性较强、需要在短时间内进行业务反馈;需要与用户或服务器进行数据交互,从而需要消耗较多的***资源。例如,用于执行交易功能的业务功能模块的功能属性为实时交互属性。
在另一种可选的实现方式中,根据目标应用是否处于前台运行模式和/或是否处于全屏运行模式,判断目标应用的当前状态是否属于预设的实时交互状态。例如,当目标应用处于后台运行模式时,通常说明该目标应用当前并未处于使用状态,则可以将其确定为非实时交互状态,即空闲状态。又如,当目标应用处于全屏运行模式时,通常说明该目标应用当前正处于使用状态,则可以将其确定为实时交互状态,即非空闲状态。
上述的几种实现方式既可以单独使用,也可以结合使用,本发明对此不做限定。
具体实施时,既可以直接根据本次获取到的目标应用的应用状态信息判断目标应用的当前状态是否为空闲状态,也可以进一步结合以往获取到的目标应用的应用状态信息判断目标应用的当前状态是否为空闲状态。在后一种方式中,为了便于判断,在每次获取到目标应用的应用状态信息之后,进一步根据上述几种方式确定与本次获取到目标应用的应用状态信息相对应的目标应用的应用状态是否为空闲状态,并在历史数据库中进一步存储与各次获取到的应用状态信息相对应的应用状态。
在一种优选的实现方式中,首先,根据本次获取到的目标应用的应用状态信息判断目标应用的当前状态是否为空闲状态,若判断结果为否,则继续循环执行步骤S210;若判断结果为是,则进一步从历史数据库中获取以往得到的目标应用的应用状态信息,以便结合历史数据辅助判断目标应用的当前状态是否为空闲状态。
具体实施时,根据历史数据库中存储的目标应用与各个预设时间相对应的应用状态信息,确定目标应用的应用状态信息与预设时间之间的关联关系,并根据该关联关系判断目标应用的当前状态是否为空闲状态。其中,该关联关系主要用于表示应用状态信息与时间之间的相互关联,以便于挖掘应用状态信息随时间的变化规律。由于同一目标应用的使用状态可能与时间相关,例如,可能在每天的同一时段使用,或在一段时间内频繁使用等,因此,通过挖掘目标应用的应用状态信息与预设时间之间的关联关系,有助于准确判断目标应用的当前状态是否为空闲状态。
具体地,获取目标应用在预设时段内的应用状态信息;统计该目标应用在该预设时段内处于空闲状态的频次,根据统计结果确定该目标应用的当前状态是否为空闲状态。具体可通过以下两种方式中的至少一种实现:
在第一种实现方式中,预设时段包括:历史同期时段,且该历史同期时段包括:各个时间单元内与当前时段相对应的时段。其中,时间单元包括:自然日、星期、月份、和/或年份,且当前时段根据当前***时间确定。例如,假设当前***时间为3点58分,确定与当前***时间相对应的当前时段为3点50分至4点这一时段,相应地,当时间单元为自然日时,获取每一天的3点50分至4点这一时段内的应用状态信息,进而根据目标应用在3点50分至4点这一时段内处于空闲状态的频次,预测该目标应用的当前状态是否为空闲状态。比如,若在过去的100天内,目标应用在3点50分至4点这一时段内处于空闲状态的天数超过80天,则预测该目标应用的当前状态为空闲状态;反之,若目标应用在3点50分至4点这一时段内处于空闲状态的天数仅为10天,则预测该目标应用的当前状态为非空闲状态。其中,与当前***时间相对应的当前时段的长度可由本领域技术人员灵活设定,例如,既可以为一分钟,也可以为一天,本发明对此不做限定,相应地,时间单元也可以为星期或月份甚至年份等。
在第二种实现方式中,预设时段包括:由当前时间以及预设起始时间确定的时段,其中,该预设起始时间与当前时间间隔预设时长。由此可见,在该方式中,预设时段为近期内的某一时段,例如,最近1个月,或最近半年等。若目标应用在近期内使用频繁,则说明该目标应用即将处于非空闲状态的可能性很大,相应地,预测该目标应用的当前状态为非空闲状态。
上述两种方式既可以结合使用,也可以单独使用,本发明对此不做限定。由此可见,在本步骤中确定的目标应用的当前状态实质上不仅包括当前时间点的状态,还包括在未来一段时间内即将发生的状态。具体地,由于后续步骤中生成内存镜像文件的过程非常耗时,因此,仅仅判断目标应用在当前时间点是否处于空闲状态无法满足运行要求,还需要确保目标应用在未来的一段时间内持续处于空闲状态,相应地,在本步骤中,不仅根据本次获取到的应用状态信息判断目标应用在当前时间点是否空闲,还进一步结合历史数据库中存储的应用状态信息预测目标应用在接下来的一段时间内是否空闲,从而使内存检测操作对应用运行的影响降至最低。
可选的,当本发明实施例用于针对多个客户端上运行的目标应用进行内存检测操作时,由于各个客户端上的目标应用的应用状态信息各不相同,因此,需要在历史数据库中进一步存储目标应用与各个预设时间相对应的应用状态信息以及客户端标识之间的对应关系。相应地,在本步骤中,进一步确定需要触发内存检测操作的目标应用所对应的客户端标识,从历史数据库中获取与该需要触发内存检测操作的目标应用所对应的客户端标识相匹配的应用状态信息,以根据获取到的与该客户端标识相匹配的应用状态信息判断目标应用的当前状态是否为空闲状态。
其中,该客户端标识可以是设备标识、或用户标识等能够唯一标识一台设备或一个用户的标识信息,相应地,根据目标应用在同一设备上的应用状态信息确定该目标应用的当前状态是否为空闲状态,由此能够充分挖掘同一设备的运行规律,确保当前状态的判定更加合理。
另外,考虑到相同类型的用户往往具有相似的业务使用习惯,在本实施例中,还可以进一步根据用户画像数据划分用户类型,例如,根据用户画像数据中的年龄、性别、历史应用使用数据等内容将用户类型划分为多种类型,相应地,客户端标识也可以为用户类型标识,并且,在步骤S210中,获取与各个用户类型相对应的目标应用的内存占用信息以及应用状态信息,以便于在历史数据库中按照用户类型存储内存占用信息以及应用状态信息。由于相同类型的用户往往具有相似的应用使用习惯,因此,通过该方式有助于准确判断目标应用的当前状态。例如,假设目标应用为音乐类应用,通过对历史数据库中的数据进行分析发现,大多数年轻用户群体都会在夜间八点至九点之间利用目标应用收听音乐,因此,在当前***时间为八点时,确定同属于年轻用户群体的客户端标识所对应的目标应用的当前状态为非空闲状态。
步骤S240:当目标应用的当前状态为空闲状态时,控制目标应用生成内存镜像文件,以根据内存镜像文件检测目标应用是否发生内存泄露。
具体地,当确定目标应用的当前状态为空闲状态时,说明此时生成内存镜像文件不会导致应用卡死的问题,相应地,控制目标应用生成内存镜像文件,具体可通过服务器向目标应用发送镜像文件生成指令的方式实现,进而能够根据内存镜像文件检测目标应用是否发生内存泄露。其中,内存镜像文件是指包含应用程序在指定时刻的完整内存信息的文件,利用该文件能够准确检测内存泄露。
当然,若目标应用的当前状态并非空闲状态,则暂缓执行内存镜像文件的生成操作,并继续循环执行步骤S210及其后续步骤。
另外,可选的,客户端在生成内存镜像文件时,还可以自动筛查可能的内存泄露原因,并根据筛查结果对内存镜像文件进行裁剪处理,并向服务器发送裁剪后的内存镜像文件,以提升传输效率,降低传输时延。其中,在进行裁剪处理时,除了根据可能的泄露原因对内存镜像文件进行裁剪之外,还可以进一步提取内存镜像文件中包含的图片信息,并将提取到的图片信息删除,仅保留与图片信息相对应的描述部分。由于图片信息的数据量较大,且信息量较少,对内存泄露分析作用不大,因此,将图片删除有助于提升传输效率。该方式能够缩减内存镜像文件的大小,从而降低对目标应用的性能影响,有助于在线上环境中检测目标应用的内存泄露情况。
另外,本实施例中的目标应用可以为移动应用,由于移动设备具有内存较少且***资源紧张等特点,因此,尤其适用于通过本实施例中的方式进行处理,从而降低移动应用卡死的概率。
综上可知,通过本发明实施例中的方式,一方面,能够根据目标应用的内存占用信息合理确定需要执行内存检测操作的时机,从而既能够及时检测内存泄露问题,又能够避免对应用运行造成不必要的影响;另一方面,能够根据获取到的应用状态信息判断目标应用是否处于空闲状态,并在空闲状态时生成内存镜像文件,从而防止在应用运行过程中生成镜像文件所导致的应用卡死问题,进而能够及时检测线上运行环境中的内存泄露问题。另外,在本实施例中,能够结合各次获取到的应用状态信息预测当前时段以及与当前时段相对应的未来时段内的应用使用情况,从而有效避免内存检测操作对目标应用造成影响的问题。由于该方式能够基于内存占用信息合理确定触发内存检测操作的执行时机,并且,能够基于以往存储的应用状态信息准确判断目标应用是否空闲,从而能够有效规避因生成内存镜像文件所导致的应用卡顿现象,进而能够在目标应用的线上运行环境中检测内存是否泄露,有助于根据线上真实的内存镜像文件解决真实场景下的内存泄露问题。该方式能够解决内存泄露问题,有效提高移动应用的流畅度并降低其崩溃率,并且,解决了现有技术只能在测试环境中检测内存是否泄露,而无法在真实的线上环境进行检测的问题。
实施例三
图3示出了本发明实施例三提供的一种应用内存泄露的检测装置的结构示意图,该装置包括:
获取模块31,适于获取目标应用的内存占用信息以及应用状态信息;
判断模块32,适于当根据所述目标应用的内存占用信息确定需要触发内存检测操作时,根据已获取的目标应用的应用状态信息判断所述目标应用的当前状态是否为空闲状态;
检测模块33,适于若所述目标应用的当前状态为空闲状态,控制所述目标应用生成内存镜像文件,以根据所述内存镜像文件检测所述目标应用是否发生内存泄露。
可选的,所述判断模块具体适于:
根据所述应用状态信息判断所述目标应用的当前状态是否属于预设的实时交互状态;
若否,确定所述目标应用的当前状态为空闲状态。
可选的,所述判断模块具体适于:
根据目标应用中的各个功能模块的优先级,判断所述目标应用的当前状态是否属于预设的实时交互状态;其中,若目标应用中正在运行的功能模块的优先级高于预设级别,则确定目标应用的应用状态为实时交互状态;和/或,
根据目标应用中的各个功能模块的功能属性,判断所述目标应用的当前状态是否属于预设的实时交互状态;其中,若目标应用中正在运行的功能模块的功能属性为实时交互属性,则确定目标应用的应用状态为实时交互状态;和/或,
根据目标应用是否处于前台运行模式和/或是否处于全屏运行模式,判断所述目标应用的当前状态是否属于预设的实时交互状态。
可选的,所述获取模块具体适于:
每当预设时间到达时,获取目标应用与该预设时间相对应的内存占用信息以及应用状态信息,并在历史数据库中存储目标应用与各个预设时间相对应的内存占用信息以及应用状态信息。可选的,所述判断模块具体适于:根据所述历史数据库中存储的目标应用与各个预设时间相对应的应用状态信息,确定目标应用的应用状态信息与预设时间之间的关联关系,并根据所述关联关系判断所述目标应用的当前状态是否为空闲状态。
可选的,所述判断模块具体适于:
获取所述目标应用在预设时段内的应用状态信息;
统计所述目标应用在所述预设时段内处于空闲状态的频次,根据统计结果确定所述目标应用的当前状态是否为空闲状态。
可选的,所述预设时段包括:历史同期时段,且所述历史同期时段包括:各个时间单元内与当前时段相对应的时段,所述时间单元包括:自然日、星期、月份、和/或年份,且所述当前时段根据当前***时间确定;和/或,
所述预设时段包括:由当前时间以及预设起始时间确定的时段,其中,该预设起始时间与当前时间间隔预设时长。
可选的,所述历史数据库进一步用于存储目标应用与各个预设时间相对应的应用状态信息以及客户端标识之间的对应关系;
则所述判断模块具体适于:
确定需要触发内存检测操作的目标应用所对应的客户端标识,从所述历史数据库中获取与所述需要触发内存检测操作的目标应用所对应的客户端标识相匹配的应用状态信息,以根据获取到的与所述客户端标识相匹配的应用状态信息判断所述目标应用的当前状态是否为空闲状态。
可选的,所述客户端标识包括:用户类型标识;则所述判断模块进一步适于:
获取与各个用户类型相对应的目标应用的内存占用信息以及应用状态信息;其中,所述用户类型根据用户画像数据划分。
可选的,所述判断模块具体适于:
获取所述历史数据库中已存储的目标应用与各个预设时间相对应的内存占用信息;
判断所述目标应用的内存占用信息是否呈上升趋势,和/或,判断所述目标应用的内存占用信息是否达到预设风险阈值;
若是,则确定需要触发内存检测操作。
关于各个模块的具体工作原理可参照方法实施例中相应步骤的描述,此处不再赘述。
由此可见,在本发明实施例中,一方面,能够根据目标应用的内存占用信息合理确定需要执行内存检测操作的时机,从而既能够及时检测内存泄露问题,又能够避免对应用运行造成不必要的影响;另一方面,能够根据获取到的应用状态信息判断目标应用是否处于空闲状态,并在空闲状态时生成内存镜像文件,从而防止在应用运行过程中生成镜像文件所导致的应用卡死问题,进而能够及时检测线上运行环境中的内存泄露问题。
实施例四
本申请实施例四提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的应用内存泄露的检测方法。可执行指令具体可以用于使得处理器执行上述方法实施例中对应的各个操作。
实施例五
图4示出了根据本发明实施例五的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图4所示,该电子设备可以包括:处理器(processor)402、通信接口(Communications Interface)406、存储器(memory)404、以及通信总线408。
其中:
处理器402、通信接口406、以及存储器404通过通信总线408完成相互间的通信。
通信接口406,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器402,用于执行程序410,具体可以执行上述应用内存泄露的检测方法实施例中的相关步骤。
具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器404,用于存放程序410。存储器404可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序510具体可以用于使得处理器502执行上述方法实施例中对应的各个操作。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的基于语音输入信息的抽奖***中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种应用内存泄露的检测方法,包括:
获取目标应用的内存占用信息以及应用状态信息;
当根据所述目标应用的内存占用信息确定需要触发内存检测操作时,根据已获取的目标应用的应用状态信息判断所述目标应用的当前状态是否为空闲状态;
若所述目标应用的当前状态为空闲状态,控制所述目标应用生成内存镜像文件,以根据所述内存镜像文件检测所述目标应用是否发生内存泄露。
2.根据权利要求1所述的方法,其中,所述根据已获取的目标应用的应用状态信息判断所述目标应用的当前状态是否为空闲状态包括:
根据所述应用状态信息判断所述目标应用的当前状态是否属于预设的实时交互状态;
若否,确定所述目标应用的当前状态为空闲状态。
3.根据权利要求2所述的方法,其中,所述根据所述应用状态信息判断所述目标应用的当前状态是否属于预设的实时交互状态包括:
根据目标应用中的各个功能模块的优先级,判断所述目标应用的当前状态是否属于预设的实时交互状态;其中,若目标应用中正在运行的功能模块的优先级高于预设级别,则确定目标应用的应用状态为实时交互状态;和/或,
根据目标应用中的各个功能模块的功能属性,判断所述目标应用的当前状态是否属于预设的实时交互状态;其中,若目标应用中正在运行的功能模块的功能属性为实时交互属性,则确定目标应用的应用状态为实时交互状态;和/或,
根据目标应用是否处于前台运行模式和/或是否处于全屏运行模式,判断所述目标应用的当前状态是否属于预设的实时交互状态。
4.根据权利要求1-3任一所述的方法,其中,所述获取目标应用的内存占用信息以及应用状态信息包括:
每当预设时间到达时,获取目标应用与该预设时间相对应的内存占用信息以及应用状态信息,并在历史数据库中存储目标应用与各个预设时间相对应的内存占用信息以及应用状态信息。
5.根据权利要求4所述的方法,其中,所述根据已获取的目标应用的应用状态信息判断所述目标应用的当前状态是否为空闲状态包括:根据所述历史数据库中存储的目标应用与各个预设时间相对应的应用状态信息,确定目标应用的应用状态信息与预设时间之间的关联关系,并根据所述关联关系判断所述目标应用的当前状态是否为空闲状态。
6.根据权利要求5所述的方法,其中,所述确定目标应用的应用状态信息与预设时间之间的关联关系,并根据所述关联关系判断所述目标应用的当前状态是否为空闲状态包括:
获取所述目标应用在预设时段内的应用状态信息;
统计所述目标应用在所述预设时段内处于空闲状态的频次,根据统计结果确定所述目标应用的当前状态是否为空闲状态。
7.根据权利要求6所述的方法,其中,所述预设时段包括:历史同期时段,且所述历史同期时段包括:各个时间单元内与当前时段相对应的时段,所述时间单元包括:自然日、星期、月份、和/或年份,且所述当前时段根据当前***时间确定;和/或,
所述预设时段包括:由当前时间以及预设起始时间确定的时段,其中,该预设起始时间与当前时间间隔预设时长。
8.一种应用内存泄露的检测装置,包括:
获取模块,适于获取目标应用的内存占用信息以及应用状态信息;
判断模块,适于当根据所述目标应用的内存占用信息确定需要触发内存检测操作时,根据已获取的目标应用的应用状态信息判断所述目标应用的当前状态是否为空闲状态;
检测模块,适于若所述目标应用的当前状态为空闲状态,控制所述目标应用生成内存镜像文件,以根据所述内存镜像文件检测所述目标应用是否发生内存泄露。
9.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7中任一项所述的应用内存泄露的检测方法对应的操作。
10.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-7中任一项所述的应用内存泄露的检测方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910980256.6A CN110795239A (zh) | 2019-10-15 | 2019-10-15 | 应用内存泄露的检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910980256.6A CN110795239A (zh) | 2019-10-15 | 2019-10-15 | 应用内存泄露的检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110795239A true CN110795239A (zh) | 2020-02-14 |
Family
ID=69439267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910980256.6A Pending CN110795239A (zh) | 2019-10-15 | 2019-10-15 | 应用内存泄露的检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110795239A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966603A (zh) * | 2020-09-04 | 2020-11-20 | 网易(杭州)网络有限公司 | 内存泄露的检测方法及装置、可读存储介质及电子设备 |
CN113094178A (zh) * | 2021-04-23 | 2021-07-09 | 北京字节跳动网络技术有限公司 | 内存镜像文件生成方法、装置、电子设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050071832A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Optimizing compiler |
CN105094710A (zh) * | 2015-09-06 | 2015-11-25 | 国电南瑞科技股份有限公司 | 基于哈希表的单进程动态存储管理方法 |
CN105653434A (zh) * | 2015-12-25 | 2016-06-08 | 小米科技有限责任公司 | 对应用使用进行跟踪处理的方法及装置 |
CN105701025A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN106155879A (zh) * | 2015-03-26 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 内存泄露的检测方法和装置 |
CN106844159A (zh) * | 2017-02-03 | 2017-06-13 | 广东欧珀移动通信有限公司 | 一种信息获取方法、装置及智能终端 |
CN108600840A (zh) * | 2018-03-29 | 2018-09-28 | 深圳市九洲电器有限公司 | 机顶盒功耗控制方法及*** |
-
2019
- 2019-10-15 CN CN201910980256.6A patent/CN110795239A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050071832A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Optimizing compiler |
CN106155879A (zh) * | 2015-03-26 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 内存泄露的检测方法和装置 |
CN105094710A (zh) * | 2015-09-06 | 2015-11-25 | 国电南瑞科技股份有限公司 | 基于哈希表的单进程动态存储管理方法 |
CN105653434A (zh) * | 2015-12-25 | 2016-06-08 | 小米科技有限责任公司 | 对应用使用进行跟踪处理的方法及装置 |
CN105701025A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN106844159A (zh) * | 2017-02-03 | 2017-06-13 | 广东欧珀移动通信有限公司 | 一种信息获取方法、装置及智能终端 |
CN108600840A (zh) * | 2018-03-29 | 2018-09-28 | 深圳市九洲电器有限公司 | 机顶盒功耗控制方法及*** |
Non-Patent Citations (1)
Title |
---|
DEVDIV移动开发社区编著: "《Android开发实战体验》", 31 January 2013 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966603A (zh) * | 2020-09-04 | 2020-11-20 | 网易(杭州)网络有限公司 | 内存泄露的检测方法及装置、可读存储介质及电子设备 |
CN111966603B (zh) * | 2020-09-04 | 2024-01-19 | 网易(杭州)网络有限公司 | 内存泄露的检测方法及装置、可读存储介质及电子设备 |
CN113094178A (zh) * | 2021-04-23 | 2021-07-09 | 北京字节跳动网络技术有限公司 | 内存镜像文件生成方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170063762A1 (en) | Event log analyzer | |
US9558091B2 (en) | Information processing device, fault avoidance method, and program storage medium | |
CN106874100B (zh) | 计算资源分配方法及装置 | |
CN111625456A (zh) | 一种卡顿定位方法和装置 | |
CN110795239A (zh) | 应用内存泄露的检测方法及装置 | |
CN106020984B (zh) | 电子设备中进程的创建方法及装置 | |
CN110955548A (zh) | 数据处理方法及装置 | |
CN110912949B (zh) | 位点提交方法和装置 | |
CN114490160A (zh) | 一种数据倾斜优化因子自动调整方法、装置、设备和介质 | |
CN108415765B (zh) | 任务调度方法、装置及智能终端 | |
CN109491771B (zh) | 基于***性能优化的任务处理方法及相关设备 | |
CN110633165B (zh) | 故障处理方法、装置、***服务器及计算机可读存储介质 | |
CN115421859B (zh) | 配置文件的动态加载方法、装置、计算机设备及存储介质 | |
CN108390770B (zh) | 一种信息生成方法、装置及服务器 | |
CN116126719A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
CN115774602A (zh) | 一种容器资源的分配方法、装置、设备及存储介质 | |
CN113220554B (zh) | 检测程序代码的性能的方法和设备 | |
CN111309475B (zh) | 一种检测任务执行方法及设备 | |
CN114186123A (zh) | 用于热点事件的处理方法、装置、设备及存储介质 | |
CN115914064A (zh) | 网络***服务性能评估方法、装置、计算设备和存储介质 | |
CN106095445B (zh) | 驱动程序的安装方法、装置以及终端 | |
CN109063206B (zh) | 文章监控方法及装置 | |
CN113835733B (zh) | 云应用更新方法、装置、电子设备以及存储介质 | |
CN110933168B (zh) | 一种多个物联网设备的消息上报方法、设备及存储介质 | |
CN116801001A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200214 |
|
RJ01 | Rejection of invention patent application after publication |