CN117149477A - 内存泄露检测方法和装置 - Google Patents

内存泄露检测方法和装置 Download PDF

Info

Publication number
CN117149477A
CN117149477A CN202310133217.9A CN202310133217A CN117149477A CN 117149477 A CN117149477 A CN 117149477A CN 202310133217 A CN202310133217 A CN 202310133217A CN 117149477 A CN117149477 A CN 117149477A
Authority
CN
China
Prior art keywords
memory
detection
detection parameter
memory type
type
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
Application number
CN202310133217.9A
Other languages
English (en)
Inventor
王司宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202310133217.9A priority Critical patent/CN117149477A/zh
Publication of CN117149477A publication Critical patent/CN117149477A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0706Error 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/073Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施提供一种内存泄露检测方法和装置,方法包括:获取第一进程以及第一进程对应的第一内存类型;从第一对应关系中获取与第一内存类型对应的第一检测参数;利用第一检测参数检测第一进程是否存在内存泄露;获取第二进程以及第二进程对应的第二内存类型;第二进程与第一进程不同,第二内存类型与第一内存类型相同;在第二进程与第二内存类型均包含于第一对应关系时,从第一对应关系中获取与第二内存类型对应的第二检测参数;第二检测参数与第一检测参数不同;利用第二检测参数检测第二进程是否存在内存泄露。这样,使得终端设备可以为内存类型相同的不同进程匹配不同的检测参数,实施差异化的内存泄露检测,提高内存泄露检测的准确度。

Description

内存泄露检测方法和装置
技术领域
本申请涉及终端技术领域,尤其涉及一种内存泄露检测方法和装置。
背景技术
内存泄漏是指程序中已动态分配的内存由于某种原因程序未释放或无法释放,造成***内存浪费的一种问题。***中一旦发生内存泄漏,很有可能会导致***内存资源的紧张,从而触发应用或整机卡顿、卡死、甚至闪退、重启等严重故障,影响用户使用体验。
通常情况下,终端设备可以为每一类监控的内存定义对应的内存类型,并定义内存类型对应的内存泄露标准,实现对于不同内存的泄露检测。
然而,上述内存泄露检测方法的准确度较低。
发明内容
本申请实施例提供一种内存泄露检测方法和装置,用于提高内存泄露检测方法的准确度。
第一方面,本申请实施提供一种内存泄露检测方法,应用于终端设备,方法包括:获取第一进程以及第一进程对应的第一内存类型;在第一进程与第一内存类型均包含于第一对应关系时,从第一对应关系中获取与第一内存类型对应的第一检测参数;其中,第一对应关系为终端设备中预设的,第一对应关系中包括:进程、内存类型以及检测参数之间的对应关系,检测参数用于对进程的内存泄露情况进行检测;利用第一检测参数检测第一进程是否存在内存泄露;获取第二进程以及第二进程对应的第二内存类型;第二进程与第一进程不同,第二内存类型与第一内存类型相同;在第二进程与第二内存类型均包含于第一对应关系时,从第一对应关系中获取与第二内存类型对应的第二检测参数;第二检测参数与第一检测参数不同;利用第二检测参数检测第二进程是否存在内存泄露。
这样,使得终端设备可以为内存类型相同的不同进程匹配不同的检测参数,实施差异化的内存泄露检测,提高内存泄露检测的准确度。
在一种可能的实现方式中,方法还包括:获取第三进程以及第三进程对应的第三内存类型;在第三进程不包含于第一对应关系时,或者,第三进程包含于第一对应关系且第三内存类型不包含于第一对应关系时,从第二对应关系中获取与第三内存类型对应的第三检测参数;其中,第二对应关系中包括:内存类型与检测参数之间的对应关系;利用第三检测参数检测第三进程是否存在内存泄露。这样,终端设备中还可以设置有第二对应关系,使得终端设备也可以在未从第一对应关系中查找到检测参数时,从第二对应关系中继续查找检测单数,保证内存泄露检测的稳定性。
在一种可能的实现方式中,第一内存类型对应的第一检测参数为M个,方法还包括:从第二对应关系中获取与第一内存类型对应的第四检测参数;第四检测参数为N个,M小于N;利用第一检测参数检测第一进程是否存在内存泄露,包括:基于M个第一检测参数和K个第四检测参数,检测第一进程是否存在内存泄露;其中,K个第四检测参数中的参数类型与M个第一检测参数中的参数类型不同,K小于N。这样,终端设备中可以设置第一对应关系,也可以设置第二对应关系,使得终端设备可以基于第一对应关系中的检测参数以及第二对应关系中的检测参数,共同进行内存泄露,保障内存泄露的准确度和稳定性。
在一种可能的实现方式中,检测参数包括下述一种或多种:用于指示预设时长内的内存使用峰值的第一阈值、用于指示预设时长内的内存增长情况的第一斜率、或用于指示预设时长内的内存累积增长情况的第二阈值。
在一种可能的实现方式中,终端设备满足下述一种或多种条件:第一检测参数对应的第一阈值小于第四检测参数对应的第一阈值,第一检测参数对应的第一斜率小于第四检测参数对应的第一斜率,或第一检测参数对应的第二阈值小于第四检测参数对应的第二阈值。可以理解的是,第一对应关系中的检测参数可以根据不同进程对设备的重要程度设置不同数值,相对于第二对应关系中的检测参数,检测标准应该更为严格,以及时的检测出某个进程发生内存泄露,提高终端设备运行的安全性。
在一种可能的实现方式中,方法还包括:获取预设时长内,第一内存类型中的任一内存类型在使用时产生的第一数据;第一数据包括下述一种或多种:用于指示第一内存类型中的任一内存类型的内存使用峰值的第一数值、用于指示第一内存类型中的任一内存类型的内存增长情况的第二斜率、或用于指示第一内存类型中的任一内存类型的内存累积增长情况的第二数值;利用第一检测参数检测第一进程是否存在内存泄露,包括:在确定第一数据满足预设条件时确定第一进程存在内存泄露;其中,预设条件包括下述一种或多种:第一数值大于第一检测参数对应的第一阈值、第二斜率大于第一检测参数对应的第一斜率、或第二数值大于第一检测参数对应的第二阈值。这样,使得终端设备可以利用不同的参数类型进行内存泄露的检测,提高内存泄露检测的准确性。
在一种可能的实现方式中,方法还包括:在检测到第二进程的第二内存类型存在内存泄露时,释放第二内存类型对应的内存空间和/或对第二进程的运行轨迹进行记载。这样,使得终端设备可以通过内存空间的释放,恢复内存;通过对进程的运行轨迹的记载,实现对程的内存泄露过程进行统计与分析。
第二方面,本申请实施例提供一种内存泄露检测装置,内存泄露检测装置包括:获取单元以及处理单元,获取单元,用于获取第一进程以及第一进程对应的第一内存类型;在第一进程与第一内存类型均包含于第一对应关系时,获取单元,还用于从第一对应关系中获取与第一内存类型对应的第一检测参数;其中,第一对应关系为终端设备中预设的,第一对应关系中包括:进程、内存类型以及检测参数之间的对应关系,检测参数用于对进程的内存泄露情况进行检测;处理单元,用于利用第一检测参数检测第一进程是否存在内存泄露;获取单元,还用于获取第二进程以及第二进程对应的第二内存类型;第二进程与第一进程不同,第二内存类型与第一内存类型相同;在第二进程与第二内存类型均包含于第一对应关系时,获取单元,还用于从第一对应关系中获取与第二内存类型对应的第二检测参数;第二检测参数与第一检测参数不同;处理单元,还用于利用第二检测参数检测第二进程是否存在内存泄露。
在一种可能的实现方式中,获取单元,还用于获取第三进程以及第三进程对应的第三内存类型;在第三进程不包含于第一对应关系时,或者,第三进程包含于第一对应关系且第三内存类型不包含于第一对应关系时,处理单元,还用于从第二对应关系中获取与第三内存类型对应的第三检测参数;其中,第二对应关系中包括:内存类型与检测参数之间的对应关系;利用第三检测参数检测第三进程是否存在内存泄露。
在一种可能的实现方式中,第一内存类型对应的第一检测参数为M个,获取单元,还用于从第二对应关系中获取与第一内存类型对应的第四检测参数;第四检测参数为N个,M小于N;处理单元,还用于基于M个第一检测参数和K个第四检测参数,检测第一进程是否存在内存泄露;其中,K个第四检测参数中的参数类型与M个第一检测参数中的参数类型不同,K小于N。
在一种可能的实现方式中,检测参数包括下述一种或多种:用于指示预设时长内的内存使用峰值的第一阈值、用于指示预设时长内的内存增长情况的第一斜率、或用于指示预设时长内的内存累积增长情况的第二阈值。
在一种可能的实现方式中,终端设备满足下述一种或多种条件:第一检测参数对应的第一阈值小于第四检测参数对应的第一阈值,第一检测参数对应的第一斜率小于第四检测参数对应的第一斜率,或第一检测参数对应的第二阈值小于第四检测参数对应的第二阈值。
在一种可能的实现方式中,获取单元,还用于获取预设时长内,第一内存类型中的任一内存类型在使用时产生的第一数据;第一数据包括下述一种或多种:用于指示第一内存类型中的任一内存类型的内存使用峰值的第一数值、用于指示第一内存类型中的任一内存类型的内存增长情况的第二斜率、或用于指示第一内存类型中的任一内存类型的内存累积增长情况的第二数值;处理单元,还用于在确定第一数据满足预设条件时确定第一进程存在内存泄露;其中,预设条件包括下述一种或多种:第一数值大于第一检测参数对应的第一阈值、第二斜率大于第一检测参数对应的第一斜率、或第二数值大于第一检测参数对应的第二阈值。
在一种可能的实现方式中,在检测到第二进程的第二内存类型存在内存泄露时,处理单元,还用于释放第二内存类型对应的内存空间和/或对第二进程的运行轨迹进行记载。
第三方面,本申请实施例提供一种终端设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时,使得终端设备执行第一方面或第一方面的任意一种可能的实现方式中描述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中描述的方法。
第五方面,本申请实施例提供一种包括计算机程序的计算机程序产品,当计算机程序在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中描述的方法。
应当理解的是,本申请的第二方面至第五方面与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1为本申请实施例提供的一种终端设备的硬件结构示意图;
图2为本申请实施例提供的一种内存泄露检测方法的流程示意图;
图3为本申请实施例提供的另一种基于内存泄漏检测方法的流程示意图;
图4为本申请实施例提供的再一种内存泄漏检测方法的流程示意图;
图5为本申请实施例提供的一种内存泄露检测装置的结构示意图;
图6为本申请实施例提供的另一种终端设备的硬件结构示意图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一值和第二值仅仅是为了区分不同的值,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或a、b和c,其中a,b,c可以是单个,也可以是多个。
通常情况下,终端设备中可以设置不同内存类型分别对应的检测参数,在检测到某个进程时,可以获取该进程对应的内存类型,并通过内存类型对应的检测参数进行内存泄露的检测。
然而,在上述内存泄露检测方法中,判断不同进程中同一类型的内存是否发生泄露时使用的检测参数是相同的,而不同进程中同一类型的内存分别发生内存泄露时产生的影响存在差异性,因此上述内存泄露检测方法的精度和准确度较低,无法实现根据不同进程以及内存类型进行差异化泄露检测。
可以理解的是,在安卓(android)***中,由于进程区分***进程和用户进程,且***进程中也存在如关键进程、或非关键进程等进程区别,因此即使是同一种类型内存泄漏,发生在不同的进程上对***的影响也有很大的区别。例如***关键进程system_server的JAVA类型内存泄漏400MB,可能已经导致***卡顿、卡死等严重故障;但若是普通应用程序中的进程,如视频播放进程等泄漏400MB的JAVA内存,可能只会导致该应用程序本身存在异常,不会影响***全局。
有鉴于此,本申请实施例提供一种内存泄露检测方法和装置,使得终端设备可以为内存类型相同的不同进程匹配不同的检测参数,实施差异化的内存泄露检测,提高内存泄露检测的准确度。
可以理解的是,上述终端设备也可以称为终端,(terminal)、用户设备(userequipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)等。终端设备可以为手机(mobile phone)、智能电视、穿戴式设备、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self-driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等。本申请的实施例对终端设备所采用的具体技术和具体设备形态不做限定。
因此,为了能够更好地理解本申请实施例,下面对本申请实施例的终端设备的结构进行介绍。示例性的,图1为本申请实施例提供的一种终端设备的结构示意图。
终端设备可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,指示器192,摄像头193,以及显示屏194等。其中,传感器模块180中可以包括下述一种或多种,例如:压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,或骨传导传感器等。
可以理解的是,本申请实施例示意的结构并不构成对终端设备的具体限定。在本申请另一些实施例中,终端设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器110中还可以设置存储器,用于存储指令和数据。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为终端设备充电,也可以用于终端设备与***设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他设备,例如AR设备等。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。电源管理模块141用于连接充电管理模块140与处理器110。
终端设备的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。终端设备中的天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。
移动通信模块150可以提供应用在终端设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。
无线通信模块160可以提供应用在终端设备上的包括无线局域网(wirelesslocalarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星***(global navigation satellite system,GNSS),调频(frequencymodulation,FM)等无线通信的解决方案。
终端设备通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。在一些实施例中,终端设备可以包括1个或N个显示屏194,N为大于1的正整数。
终端设备可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
摄像头193用于捕获静态图像或视频。在一些实施例中,终端设备可以包括1个或N个摄像头193,N为大于1的正整数。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。
终端设备可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。终端设备可以通过扬声器170A收听音乐,或收听免提通话。受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当终端设备接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。耳机接口170D用于连接有线耳机。麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。本申请实施例中,终端设备可以拥有设置一个麦克风170C。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。终端设备可以接收按键输入,产生与终端设备的用户设置以及功能控制有关的键信号输入。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
终端设备的软件***可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构等,在此不再赘述。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以独立实现,也可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
示例性的,图2为本申请实施例提供的一种内存泄露检测方法的流程示意图。如图2所示,该内存泄露检测方法可以包括如下步骤:
S201、终端设备获取第一进程以及第一进程对应的第一内存类型。
第一进程可以为***进程、或也可以为应用进程等,第一进程可以以进程名称、或进程类型等设置在终端设备中。
第一内存类型可以为第一进程使用的内存类型,第一内存类型的数量可以为一个或者多个。例如,第一内存类型可以包括下述一种或多种:JAVA类型、slub类型、分配内存vmalloc类型、原生(native)类型、dma_buf类型、proc文件类型、或图像处理器(graphicsprocessing unit,GPU)类型等,本申请实施例中对内存的类型和数量、以及进程的类型不做限定。
示例性的,终端设备可以周期性获取第一进程以及第一内存类型;或者,终端设备可以在预设的时间点处获取第一进程以及第一内存类型;或者,终端设备也可以在接收到用于指示内存泄露检测的操作(或指令)时,获取第一进程以及第一内存类型,本申请实施例中对内存泄露检测的触发方式不做具体限定。
S202、在第一进程与第一内存类型均包含于第一对应关系时,终端设备从第一对应关系中获取与第一内存类型对应的第一检测参数。
第一对应关系为终端设备中预设的,第一对应关系中包括:进程、内存类型以及检测参数之间的对应关系。
检测参数用于对进程的内存泄露情况进行检测,例如该检测参数中可以包括下述一种或多种:用于指示预设时长内的内存使用峰值的第一阈值、用于指示预设时长内的内存增长情况的第一斜率、或用于指示预设时长内的内存累积增长情况的第二阈值等,本申请实施例中对检测参数的类型和数量不做限定。其中,该预设时长可以为30秒、1分钟或5分钟等时长;该第一阈值以及第二阈值的单位可以为兆(mbyte,MB)。
表1为一种第一对应关系的示意表
参见表1,进程α的内存类型可以包括:A、B和C,内存类型为A时对应的检测参数可以包括:第一阈值Tαa、第二阈值Lαa以及第一斜率Mαa。进程γ且内存类型为A时对应的检测参数可以包括:第一阈值Tγa以及第二阈值Lγa,此时内存类型A可以不包含第一斜率。可见,第一对应关系中可以包括:进程与该进程对应的至少一个内存类型、以及该至少一个内存类型中的任一内存类型对应的至少一个第一检测参数之间的对应关系。
S203、终端设备利用第一检测参数检测第一进程是否存在内存泄露。
示例性的,在第一对应关系中包括:第一进程、第一内存类型、与第一检测参数之间的对应的关系的情况下,终端设备可以获取预设时长内,第一内存类型中的任一内存类型在使用时产生的第一数据。其中,第一数据包括下述一种或多种:用于指示第一内存类型中的任一内存类型的内存使用峰值的第一数值、用于指示第一内存类型中的任一内存类型的内存增长情况的第二斜率、或用于指示第一内存类型中的任一内存类型的内存累积增长情况的第二数值。
进一步的,在终端设备确定第一数据满足预设条件时,确定第一进程存在内存泄露。其中,预设条件可以包括下述一种或多种:第一数值大于第一检测参数对应的第一阈值、第二斜率大于第一检测参数对应的第一斜率、或第二数值大于第一检测参数对应的第二阈值。
S204、终端设备获取第二进程以及第二进程对应的第二内存类型。
其中,第二进程与第一进程不同,第二内存类型与第一内存类型相同。
S205、在第二进程与第二内存类型均包含于第一对应关系时,终端设备从第一对应关系中获取与第二内存类型对应的第二检测参数。
其中,第二检测参数与第一检测参数不同。例如,第一检测参数中的某个参数类型对应的数值与第二检测参数中的该某个参数类型对应的数值不同,或者第一检测参数中的参数类型与第二检测参数中的参数类型不同等,本申请实施例中对此不做限定。
S206、终端设备利用第二检测参数检测第二进程是否存在内存泄露。
其中,终端设备利用第二检测参数检测第二进程是否存在内存泄漏的方法可以参见S203所示的步骤中终端设备利用第一检测参数检测第一进程是否存在内存泄漏的方法,在此不再赘述。
基于图2对应的实施例,可以理解的是,当第一进程为***进程且第二进程为应用进程时,由于***进程与应用进程对终端设备的重要程度不同,因此终端设备可以基于不同的检测参数对不同类型的进程进行内存泄露的检测,使得终端设备可以精准的对进程进行内存泄露检测。
基于此,使得终端设备可以为内存类型相同的不同进程匹配不同的检测参数,实施差异化的内存泄露检测,提高内存泄露检测的准确度。
在图2对应的实施例的基础上,可能的实现方式中,方法还包括:获取第三进程以及第三进程对应的第三内存类型;在第三进程不包含于第一对应关系时,或者,第三进程包含于第一对应关系且第三内存类型不包含于第一对应关系时,从第二对应关系中获取与第三内存类型对应的第三检测参数;利用第三检测参数检测第三进程是否存在内存泄露。
其中,第二对应关系中包括:内存类型与检测参数之间的对应关系。示例性的,该第二对应关系可以参见表2对应的描述。如表2所示,终端设备中可以存储有A-Z内存类型,以及该Z个内存类型中的任一内存类型对应的3个检测参数。
表2为一种第二对应关系的示意表
参见表2,在第二对应关系中,终端设备可以不考虑不同进程对内存泄露的影响,以内存类型为粒度,为进程对应的不同内存类型匹配合适的检测参数。可以理解为,在基于第二对应关系进行内存泄露检测时,内存类型相同的不同进程可以匹配相同的检测参数。并且,第一对应关系中包含的内存类型可以是第二对应关系中包含的内存类型的子集,并且第一对应关系中任一内存类型对应的检测参数也可以为第二对应关系中任一内存类型对应的检测参数的子集。
可能的实现方式中,当终端设备获取到进程以及该进程对应的内存类型时,可以优先确定是否可以在第一对应关系中确定出与该进程、以及内存类型相关的检测参数。或者,在终端设备未从第一对应关系中查到检测参数,例如终端设备确定进程不包含在第一对应关系中,或者进程对应的内存类型不包含在第一对应关系中时,则终端设备可以从第二对应关系中确定进程的内存类型对应的检测参数。
可以理解的是,第一对应关系中可以包含一些发生内存泄露时可能对终端设备存在较大危害的进程、以及进程对应的内存类型,因此终端设备可以优先在第一对应关系中确定检测参数,保证部分进程进行内存泄漏检测的及时性。
在图2对应的实施例的基础上,可能的实现方式中,方法还包括:从第二对应关系中获取与第一内存类型对应的第四检测参数;利用第一检测参数检测第一进程是否存在内存泄露,包括:基于M个第一检测参数和K个第四检测参数,检测第一进程是否存在内存泄露。
其中,第一内存类型对应的第一检测参数为M个;第四检测参数为N个,M小于N;K个第四检测参数中的参数类型与M个第一检测参数中的参数类型不同,K小于N。
可以理解的是,参见表1以及表2可知,第一对应关系中通常可以设置内存泄露过程中对终端设备的***存在较大影响的进程对应的内存类型、以及该内存类型对应的检测参数,而为了保障终端设备中各进程的各种内存泄露情况的安全检测,第二对应关系中通常可以设置终端设备中的各种内存类型对应的检测参数,以实现进程的任一种内存泄露情况的检测。因此,第二对应关系中包含的内存类型数量可以大于第一对应关系中包含的内存类型数量;并且,针对相同的内存类型,第一对应关系中指示的该内存类型对应的检测参数数量可以大于,第二对应关系中指示的该内存类型对应的检测参数数量。
因此终端设备可以从第一对应关系中确定与进程以及内存类型相关的检测参数。或者,终端设备也可以从第一对应关系中确定部分检测参数(如M个第一检测参数)之后,从第二对应关系中查找到与内存类型相关的部分检测参数(如N个第四检测参数中的K个第四检测参数),保障内存泄露的准确检测。
基于此,终端设备中可以设置第一对应关系,也可以设置第二对应关系,使得终端设备可以基于第一对应关系中的检测参数以及第二对应关系中的检测参数,共同进行内存泄露,保障内存泄露的准确度和稳定性。
在图2对应的实施例的基础上,可能的实现方式中,终端设备满足下述一种或多种条件:第一检测参数对应的第一阈值小于第四检测参数对应的第一阈值,第一检测参数对应的第一斜率小于第四检测参数对应的第一斜率,或第一检测参数对应的第二阈值小于第四检测参数对应的第二阈值。
示例性的,由于system_server进程的JAVA内存类型在预设时长内的内存使用峰值为400MB时将导致终端设备***卡顿。因此,在第一对应关系中,system_server进程的JAVA内存类型对应的第一阈值可以取值为400MB等数值,以实现system_server进程的JAVA内存类型发生泄露时的及时检测。
而在第二对应关系中,JAVA内存类型对应的第一阈值需要适配多种进程场景,若第一阈值也设置为400MB,则很容易在内存泄露检测过程中造成***资源的浪费。例如在某一应用进程中检测到JAVA内存类型泄露量为401MB,超过设置的400MB,而此时的401MB可能对应用进程产生影响,但不会影响***全局,因此可以提高JAVA内存类型对应的第一阈值的取值,例如设置为500MB,使得JAVA类型对应的检测参数可以适配不同的进程。
适应的,第一斜率在第一检测参数中的取值可以与,第一斜率在第四检测参数中的取值不同;第二阈值在第一检测参数中的取值可以与,第二阈值在第四检测参数中的取值不同,具体原因可以参见第一阈值的描述,在此不再赘述。
可以理解的是,第一对应关系中的检测参数可以根据不同进程对设备的重要程度设置不同数值,相对于第二对应关系中的检测参数,检测标准应该更为严格,以及时的检测出某个进程发生内存泄露,提高终端设备运行的安全性。
在图2对应的实施例的基础上,可能的实现方式中,方法还包括:获取预设时长内,第一内存类型中的任一内存类型在使用时产生的第一数据;第一数据包括下述一种或多种:用于指示第一内存类型中的任一内存类型的内存使用峰值的第一数值、用于指示第一内存类型中的任一内存类型的内存增长情况的第二斜率、或用于指示第一内存类型中的任一内存类型的内存累积增长情况的第二数值;利用第一检测参数检测第一进程是否存在内存泄露,包括:在确定第一数据满足预设条件时确定第一进程存在内存泄露。
其中,预设条件包括下述一种或多种:第一数值大于第一检测参数对应的第一阈值、第二斜率大于第一检测参数对应的第一斜率、或第二数值大于第一检测参数对应的第二阈值。
类似的,第一数据不满足预设条件包括下述一种或多种:第一数值小于或等于第一检测参数对应的第一阈值、第二斜率小于或等于第一检测参数对应的第一斜率、或第二数值小于或等于第一检测参数对应的第二阈值。
可能的实现方式中,终端设备也可以在预设时长内基于第一内存类型多次采集得到的数据进行内存泄露的判断,例如,以终端设备在预设时长内采集Q次使用第一内存类型产生的Q个第二斜率,且第一斜率可以为500KB/s为例进行示例说明。
一种实现中,在终端设备确定Q个第二斜率的平均值大于500KB/s时,则终端设备可以确定第一进程的第一内存类型发生内存泄露。
另一种实现中,在终端设备确定当前计算得到的第二斜率小于500KB/s,且终端设备统计得到的第二斜率的次数不满足预设的次数阈值R时,则终端设备可以确定第一进程的第一内存类型未发生内存泄露。
再一种实现中,Q个第二斜率中包括:至少P个第二斜率以及R个第二斜率,在终端设备确定当前计算得到的第二斜率小于500KB/s,终端设备统计得到至少P个第二斜率,Q个第二斜率中的最后R个第二斜率均大于30KB/s时,则终端设备可以确定第一进程的第一内存类型发生内存泄露。
又一种实现中,Q个第二斜率中包括:至少P个第二斜率以及Q个第二斜率中的最后一个第二斜率,在终端设备确定当前计算得到的第二斜率小于500KB/s,终端设备统计得至少到P个第二斜率,Q个第二斜率中的最后1个第二斜率大于30KB/s,且Q次采样过程期间的内存占用总量超过阈值200MB时,则终端设备可以确定第一进程的第一内存类型发生内存泄露。
又一种实现中,在终端设备统计的Q次采样过程中,最后一次采样时的第二斜率小于30KB/s,且Q次采样过程期间的内存占用总量未超过阈值200MB时,则终端设备可以确定第一进程的第一内存类型未发生内存泄露。
可以理解的是,利用第一斜率对第二斜率进行内存泄露检测的方法可以不限于上述几种。类似的,利用第一阈值对第一数值进行内存泄露检测的算法可以有多种,且利用第二阈值对第二数值进行内存泄露检测算法也可以有多种,本申请实施例中对此不做限定。
可以理解的是,终端设备可以为检测参数中的不同参数类型设置不同的检测算法,实现检测算法的差异化,使得终端设备可以实现对于不同场景中的进程是否发生内存泄露的准确检测。
可能的实现方式中,当第一内存类型的数量为多个时,终端设备可以分别确定该多个第一内存类型中的每个内存类型在使用时产生的第一数据,并在确定该每个内存类型在使用时产生的第一数据均满足预设条件时,可以确定第一进程的第一内存类型产生内存泄露。
为更清楚描述本申请实施例中描述的内存泄漏方法,本申请实施例还提供两种具体的内存泄漏方法的实现过程的流程示意图。包括:基于第二对应关系进行内存泄漏检测的方法(参见图3对应的实施例),以及基于第一对应关系和/或第二对应关系进行内存泄露检测的方法(参见图4对应的实施例)。
示例性的,图3为本申请实施例提供的另一种基于内存泄漏检测方法的流程示意图。如图3所示,内存泄露方法可以包括如下步骤:
S301、终端设备读取内存类型配置。
其中,内存类型配置为预设在终端设备中的,内存类型配置可以包括:内存类型、与该内存类型对应的至少一个检测参数之间的对应关系(或称为第二对应关系),检测参数用于对进程的内存泄露情况进行检测。
S302、终端设备获取进程列表。
其中,进程列表中包括终端设备当前运行的至少一个进程,该进程可以包括***进程、和/或应用进程等。例如,进程列表可以理解为由至少一个进程名称(或进程类型)构成的列表,如该进程列表中可以包括:***服务(system_server)进程、或音频管理器(audio flinger)进程等。
S303、终端设备遍历待检测进程。
示例性的,进程列表中可以包括第一目标进程、以及第二目标进程等进程,该待检测进程可以为进程列表中的任一进程,例如该待检测进程可以为第一目标进程。
S304、终端设备遍历内存类型。
终端设备获取该第一目标进程对应的第一目标内存类型,该第一目标内存类型的数量可以为至少一个。
S305、终端设备确定检测参数。
示例性的,终端设备可以从第二对应关系中,确定第一目标内存类型对应的检测参数,该第一目标内存类型对应的检测参数可以用于对第一目标内存类型的内存泄露情况进行检测。或者,当该第一目标内存类型的数量为至少一个时,终端设备可以从第二对应关系,确定该至少一个第一目标内存类型中的每个内存类型分别对应的检测参数,实现对于至少一个第一目标内存类型中的每个内存类型的检测。
S306、终端设备判断是否发生内存泄露。
当终端设备确定发生内存泄露时,可以执行S307所示的步骤;或者,当终端设备确定未发生内存泄露时,可以执行S303所示的步骤。
示例性的,终端设备可以在预设时长内获取该第一目标内存类型对应的实时数据,该实时数据可以用于反映第一目标内存类型在预设时长内的内存使用情况;进一步的,确定该实时数据是否满足第一目标内存类型对应的检测参数。其中,该预设时长内的内存使用情况为图2对应的实施例中描述的第一数据。
S307、终端设备进行恢复和/或抓栈。
其中,恢复可以理解为终端设备对发生内存泄露的部分内存空间进行释放的步骤;抓栈可以理解为终端设备对进程的运行轨迹进行追踪和记载的步骤,该抓栈步骤可以用于对进程的内存泄露过程进行统计与分析。
可能的实现方式中,当终端设备确定未发生内存泄露时,可以执行S303所示的步骤,遍历进程列表中的下一待检测进程,如第二目标进程,并继续基于S303-S306所示的步骤判断该第二目标进程是否发生内存泄露。例如,终端设备获取第二目标进程对应的第二目标内存类型,并利用第二对应关系确定该第二目标内存类型对应的检测参数,进而基于该第二目标类型对应的检测参数检测第二目标进程是否发生内存泄露。
可以理解的是,在基于第二对应关系进行内存泄露检测的方法中,第一目标进程与第一目标进程不同,且第一目标内存类型与第二目标内存类型相同的情况下,由于第二对应关系中存储内存类型与检测参数之间的对应关系,则终端设备可以确定第一目标内存类型对应的检测参数、与第二目标内存类型对应的检测参数相同。
示例性的,图4为本申请实施例提供的再一种内存泄漏检测方法的流程示意图。如图4所示,该内存泄露检测方法可以包括如下步骤:
S401、终端设备读取内存类型配置。
关于内存类型配置的描述,可以参见S301所示的步骤。
S402、终端设备读取进程配置。
其中,进程配置为预设在终端设备中的,进程配置可以包括:进程、内存类型以及检测参数之间的对应关系(或称为第一对应关系)。
S403、终端设备获取进程列表。
S404、终端设备遍历待检测进程。
其中,待检测进程中可以包括:第一进程、以及第二进程等进程,例如该待检测进程可以为第一进程。
S405、终端设备判断待检测进程是否为定制进程。
其中,该定制进程可以理解为预先设置在终端设备的进程配置中的进程,或也可以理解为包含在第一对应关系中的进程。
在终端设备确定待检测进程为定制进程时,终端设备可以执行S406所示的步骤;或者,在终端设备确定待检测进程不是定制进程时,终端设备可以执行S407所示的步骤。
S406、终端设备遍历定制内存类型,并确定检测参数。
示例性的,在待检测进程为第一进程、第一进程为定制进程、且定制内存类型为第一进程对应的第一内存类型时,终端设备可以从进程配置中,确定与第一进程以及第一内存类型相关的检测参数,得到第一检测参数。
S407、终端设备遍历内存类型,并确定检测参数。
示例性的,在待检测进程为第一进程、第一进程为非定制进程、且内存类型为第一进程对应的第一内存类型时,终端设备可以从进程配置中,确定与第一进程以及第一内存类型相关的检测参数,得到第五检测参数。其中,第五检测参数与第一检测参数可以不同,例如第五检测参数中的参数类型可以与第一检测参数中的参数类型不同,或者第五检测参数中的某一参数类型对应的取值可以与第一检测参数中的该某一参数类型的取值不同。
S408、终端设备判断是否发生内存泄露。
示例性的,在第一进程为定制进程时,终端设备可以利用第一检测参数检测第一进程是否发生内存泄露;或者,在第一进程不是定制进程,终端设备可以利用第五检测参数检测第一进程是否发生内存泄露。
当终端设备确定发生内存泄露时,终端设备可以执行S409所示的步骤;或者,当终端设备确定未发生内存泄露时,终端设备可以执行S404所示的步骤,遍历第一进程之后的下一进程,如第二进程。
S409、终端设备进行恢复和/或抓栈。
可能的实现方式中,当终端设备确定第一进程未发生内存泄露时,终端设备可以执行S404所示的步骤,遍历进程列表中的第二进程,并继续基于S404-S408所示的步骤判断该第二进程是否发生内存泄露。例如,终端设备获取第二进程对应的第二内存类型,在第二进程为定制进程时,利用第一对应关系确定该第二内存类型对应的第二检测参数,进而基于该第二检测参数检测第二进程是否发生内存泄露。
可以理解的是,在第一进程与第一进程不同,且第一内存类型与第二内存类型相同的情况下,由于第一对应关系中存储进程、内存类型与检测参数之间的对应关系,则终端设备可以确定第一检测参数、与第二检测参数不同。
基于此,使得终端设备可以为内存类型相同的不同进程匹配不同的检测参数,实施差异化的内存泄露检测,提高内存泄露检测的准确度。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
上面结合图2-图4,对本申请实施例提供的方法进行了说明,下面对本申请实施例提供的执行上述方法的装置进行描述。
如图5所示,图5为本申请实施例提供的一种内存泄露检测装置的结构示意图,该内存泄露检测装置可以是本申请实施例中的终端设备,也可以是终端设备内的芯片或芯片***。
如图5所示,内存泄露检测装置500可以用于通信设备、电路、硬件组件或者芯片中,该内存泄露检测装置包括:获取单元501、以及处理单元502。其中,获取单元501用于支持内存泄露检测装置500执行数据获取的步骤,处理单元502用于支持内存泄露检测装置500执行数据处理的步骤。
具体的,本申请实施例提供一种内存泄露检测装置400,内存泄露检测装置包括:获取单元501以及处理单元502,获取单元501,用于获取第一进程以及第一进程对应的第一内存类型;在第一进程与第一内存类型均包含于第一对应关系时,获取单元501,还用于从第一对应关系中获取与第一内存类型对应的第一检测参数;其中,第一对应关系为终端设备中预设的,第一对应关系中包括:进程、内存类型以及检测参数之间的对应关系,检测参数用于对进程的内存泄露情况进行检测;处理单元502,用于利用第一检测参数检测第一进程是否存在内存泄露;获取单元501,还用于获取第二进程以及第二进程对应的第二内存类型;第二进程与第一进程不同,第二内存类型与第一内存类型相同;在第二进程与第二内存类型均包含于第一对应关系时,获取单元501,还用于从第一对应关系中获取与第二内存类型对应的第二检测参数;第二检测参数与第一检测参数不同;处理单元502,还用于利用第二检测参数检测第二进程是否存在内存泄露。
可能的实现方式中,该内存泄露检测装置500中也可以包括通信单元503。具体的,通信单元503用于支持内存泄露检测装置500执行数据的发送以及数据的接收的步骤。其中,该通信单元503可以是输入或者输出接口、管脚或者电路等。
可能的实施例中,内存泄露检测装置500还可以包括:存储单元504。处理单元502、存储单元504通过线路相连。存储单元504可以包括一个或者多个存储器,存储器可以是一个或者多个设备、电路中用于存储程序或者数据的器件。存储单元504可以独立存在,通过通信线路与内存泄露检测装置具有的处理单元502相连。存储单元504也可以和处理单元502集成在一起。
存储单元504可以存储终端设备中的方法的计算机执行指令,以使处理单元502执行上述实施例中的方法。存储单元504可以是寄存器、缓存或者RAM等,存储单元504可以和处理单元502集成在一起。存储单元504可以是只读存储器(read-only memory,ROM)或者可存储静态信息和指令的其他类型的静态存储设备,存储单元504可以与处理单元502相独立。
图6为本申请实施例提供的另一种终端设备的硬件结构示意图,如图6所示,该终端设备包括处理器601,通信线路604以及至少一个通信接口(图6中示例性的以通信接口603为例进行说明)。
处理器601可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路604可包括在上述组件之间传送信息的电路。
通信接口603,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线局域网(wireless local area networks,WLAN)等。
可能的,该终端设备还可以包括存储器602。
存储器602可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路604与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器602用于存储执行本申请方案的计算机执行指令,并由处理器601来控制执行。处理器601用于执行存储器602中存储的计算机执行指令,从而实现本申请实施例所提供的方法。
可能的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器601可以包括一个或多个CPU,例如图6中的CPU0和CPU1。
在具体实现中,作为一种实施例,终端设备可以包括多个处理器,例如图6中的处理器601和处理器605。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。例如,可用介质可以包括磁性介质(例如,软盘、硬盘或磁带)、光介质(例如,数字通用光盘(digital versatile disc,DVD))、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
本申请实施例还提供了一种计算机可读存储介质。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
作为一种可能的设计,计算机可读介质可以包括紧凑型光盘只读储存器(compactdisc read-only memory,CD-ROM)、RAM、ROM、EEPROM或其它光盘存储器;计算机可读介质可以包括磁盘存储器或其它磁盘存储设备。而且,任何连接线也可以被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,DSL或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘(CD),激光盘,光盘,数字通用光盘(digital versatile disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。
上述的组合也应包括在计算机可读介质的范围内。以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种内存泄露检测方法,其特征在于,应用于终端设备,所述方法包括:
获取第一进程以及所述第一进程对应的第一内存类型;
在所述第一进程与所述第一内存类型均包含于第一对应关系时,从所述第一对应关系中获取与所述第一内存类型对应的第一检测参数;其中,所述第一对应关系为所述终端设备中预设的,所述第一对应关系中包括:进程、内存类型以及检测参数之间的对应关系,所述检测参数用于对所述进程的内存泄露情况进行检测;
利用所述第一检测参数检测所述第一进程是否存在内存泄露;
获取第二进程以及所述第二进程对应的第二内存类型;所述第二进程与所述第一进程不同,所述第二内存类型与所述第一内存类型相同;
在所述第二进程与所述第二内存类型均包含于所述第一对应关系时,从所述第一对应关系中获取与所述第二内存类型对应的第二检测参数;所述第二检测参数与所述第一检测参数不同;
利用所述第二检测参数检测所述第二进程是否存在内存泄露。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取第三进程以及所述第三进程对应的第三内存类型;
在所述第三进程不包含于所述第一对应关系时,或者,所述第三进程包含于所述第一对应关系且所述第三内存类型不包含于所述第一对应关系时,从第二对应关系中获取与所述第三内存类型对应的第三检测参数;其中,所述第二对应关系中包括:内存类型与检测参数之间的对应关系;
利用所述第三检测参数检测所述第三进程是否存在内存泄露。
3.根据权利要求2所述的方法,其特征在于,所述第一内存类型对应的所述第一检测参数为M个,所述方法还包括:
从所述第二对应关系中获取与所述第一内存类型对应的第四检测参数;所述第四检测参数为N个,M小于N;
所述利用所述第一检测参数检测所述第一进程是否存在内存泄露,包括:基于M个第一检测参数和K个第四检测参数,检测所述第一进程是否存在内存泄露;其中,所述K个第四检测参数中的参数类型与所述M个第一检测参数中的参数类型不同,K小于N。
4.根据权利要求3所述的方法,其特征在于,所述检测参数包括下述一种或多种:用于指示预设时长内的内存使用峰值的第一阈值、用于指示所述预设时长内的内存增长情况的第一斜率、或用于指示所述预设时长内的内存累积增长情况的第二阈值。
5.根据权利要求4所述的方法,其特征在于,所述终端设备满足下述一种或多种条件:所述第一检测参数对应的第一阈值小于所述第四检测参数对应的第一阈值,所述第一检测参数对应的第一斜率小于所述第四检测参数对应的第一斜率,或所述第一检测参数对应的第二阈值小于所述第四检测参数对应的第二阈值。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
获取所述预设时长内,所述第一内存类型中的任一内存类型在使用时产生的第一数据;所述第一数据包括下述一种或多种:用于指示所述第一内存类型中的任一内存类型的内存使用峰值的第一数值、用于指示所述第一内存类型中的任一内存类型的内存增长情况的第二斜率、或用于指示所述第一内存类型中的任一内存类型的内存累积增长情况的第二数值;
利用所述第一检测参数检测所述第一进程是否存在内存泄露,包括:在确定所述第一数据满足预设条件时确定所述第一进程存在内存泄露;其中,所述预设条件包括下述一种或多种:所述第一数值大于所述第一检测参数对应的第一阈值、所述第二斜率大于所述第一检测参数对应的第一斜率、或所述第二数值大于所述第一检测参数对应的第二阈值。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
在检测到所述第二进程的第二内存类型存在内存泄露时,释放所述第二内存类型对应的内存空间和/或对第二进程的运行轨迹进行记载。
8.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,使得所述终端设备执行如权利要求1至7任一项所述的方法。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,使得计算机执行如权利要求1至7任一项所述的方法。
10.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序被运行时,使得计算机执行如权利要求1至7任一项所述的方法。
CN202310133217.9A 2023-02-08 2023-02-08 内存泄露检测方法和装置 Pending CN117149477A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310133217.9A CN117149477A (zh) 2023-02-08 2023-02-08 内存泄露检测方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310133217.9A CN117149477A (zh) 2023-02-08 2023-02-08 内存泄露检测方法和装置

Publications (1)

Publication Number Publication Date
CN117149477A true CN117149477A (zh) 2023-12-01

Family

ID=88882961

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310133217.9A Pending CN117149477A (zh) 2023-02-08 2023-02-08 内存泄露检测方法和装置

Country Status (1)

Country Link
CN (1) CN117149477A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008134709A (ja) * 2006-11-27 2008-06-12 Hitachi Ltd メモリリーク検出方法、メモリリーク検出装置及びメモリリーク検出プログラム
CN111638990A (zh) * 2020-06-04 2020-09-08 网易(杭州)网络有限公司 内存泄露的处理方法、装置及存储介质
CN112014037A (zh) * 2020-08-31 2020-12-01 中品国际信用管理有限公司 一种累积法泄露检测方法和***
CN112181830A (zh) * 2020-09-28 2021-01-05 厦门美柚股份有限公司 内存泄露的检测方法、装置、终端及介质
CN112988490A (zh) * 2021-04-21 2021-06-18 浙江乾冠信息安全研究院有限公司 内存泄露检测方法、装置、电子设备及介质
CN113918373A (zh) * 2021-11-25 2022-01-11 北京天融信网络安全技术有限公司 一种内存泄露监控方法、内存泄露检测方法及相应装置
CN114461375A (zh) * 2021-07-30 2022-05-10 荣耀终端有限公司 内存资源管理方法及电子设备
CN115687035A (zh) * 2021-07-23 2023-02-03 荣耀终端有限公司 一种内存泄漏的检测方法及电子设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008134709A (ja) * 2006-11-27 2008-06-12 Hitachi Ltd メモリリーク検出方法、メモリリーク検出装置及びメモリリーク検出プログラム
CN111638990A (zh) * 2020-06-04 2020-09-08 网易(杭州)网络有限公司 内存泄露的处理方法、装置及存储介质
CN112014037A (zh) * 2020-08-31 2020-12-01 中品国际信用管理有限公司 一种累积法泄露检测方法和***
CN112181830A (zh) * 2020-09-28 2021-01-05 厦门美柚股份有限公司 内存泄露的检测方法、装置、终端及介质
CN112988490A (zh) * 2021-04-21 2021-06-18 浙江乾冠信息安全研究院有限公司 内存泄露检测方法、装置、电子设备及介质
CN115687035A (zh) * 2021-07-23 2023-02-03 荣耀终端有限公司 一种内存泄漏的检测方法及电子设备
CN114461375A (zh) * 2021-07-30 2022-05-10 荣耀终端有限公司 内存资源管理方法及电子设备
CN113918373A (zh) * 2021-11-25 2022-01-11 北京天融信网络安全技术有限公司 一种内存泄露监控方法、内存泄露检测方法及相应装置

Similar Documents

Publication Publication Date Title
KR102107132B1 (ko) 전자 장치의 억세스 포인트 접속 방법 및 그 전자 장치
CN114422340B (zh) 日志上报方法、电子设备及存储介质
CN110837426A (zh) 消息处理方法、装置及***、存储介质
CN114727101B (zh) 一种天线功率调节方法及电子设备
CN113973398B (zh) 无线网络连接方法、电子设备及芯片***
CN113220385A (zh) 一种移动终端横竖屏自动设置方法
CN114500241B (zh) 一种异常复位处理的方法及终端设备
CN113778255B (zh) 触摸识别方法和装置
CN110113669B (zh) 获取视频数据的方法、装置、电子设备及存储介质
CN108132817B (zh) 对象管理方法及装置
CN114173286B (zh) 确定测试路径的方法、装置、电子设备及可读存储介质
CN114035093B (zh) 电池内阻测试方法及电子设备
CN117149477A (zh) 内存泄露检测方法和装置
CN111428080A (zh) 录像文件的存储方法、搜索方法及装置
US11815990B2 (en) Method for determining faulty computing core in multi-core processor and electronic device
CN116707050B (zh) 充放电次数记录方法、装置、电子设备及可读存储介质
CN115460445B (zh) 电子设备的投屏方法和电子设备
CN116775345B (zh) 一种数据传输方法及电子设备
CN115016666B (zh) 触控处理方法、终端设备以及存储介质
CN114264884B (zh) 介电常数测量方法及装置
CN116095768B (zh) 小区驻留方法和终端设备
CN114077323B (zh) 电子设备的触摸屏防误触方法、电子设备及芯片***
CN113268294B (zh) 界面设置的方法和装置
CN116662024B (zh) 进程间通信监控方法、装置、电子设备及存储介质
CN116737330B (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