CN114218008A - 一种内存泄漏异常的处理方法、装置和终端设备 - Google Patents

一种内存泄漏异常的处理方法、装置和终端设备 Download PDF

Info

Publication number
CN114218008A
CN114218008A CN202111609340.0A CN202111609340A CN114218008A CN 114218008 A CN114218008 A CN 114218008A CN 202111609340 A CN202111609340 A CN 202111609340A CN 114218008 A CN114218008 A CN 114218008A
Authority
CN
China
Prior art keywords
memory
application
exception
file
leakage
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
CN202111609340.0A
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.)
Spreadtrum Communications Tianjin Co Ltd
Original Assignee
Spreadtrum Communications Tianjin 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 Spreadtrum Communications Tianjin Co Ltd filed Critical Spreadtrum Communications Tianjin Co Ltd
Priority to CN202111609340.0A priority Critical patent/CN114218008A/zh
Publication of CN114218008A publication Critical patent/CN114218008A/zh
Pending legal-status Critical Current

Links

Images

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
    • 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/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • 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/079Root cause analysis, i.e. error or fault diagnosis
    • 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/0793Remedial or corrective actions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供了一种内存泄漏异常的处理方法、装置和终端设备。本发明实施例提供的技术方案中,检测应用是否发生内存泄漏,若检测出应用发生内存泄漏,生成内存泄漏异常的处理方式,根据所述内存泄漏异常的处理方式,对内存泄漏异常进行异常处理,有利于研发人员快速对内存泄漏异常进行处理,提高了内存泄漏异常问题的处理效率。

Description

一种内存泄漏异常的处理方法、装置和终端设备
【技术领域】
本发明涉及计算机技术领域,尤其涉及一种内存泄漏异常的处理方法、装置和终端设备。
【背景技术】
随着现代科技的不断发展,智能设备的硬件和软件方面都得到了很大的提升,例如,在智能手机行业,手机的运行内存已经可以达到12GB,同时配合越来越精细的软件和硬件,极大的提升了用户体验。但这也引发了新的问题,手机的应用软件变得复杂后,对内存的使用需求也更加庞大,可能会出现内存使用超出预期的情况,即应用发生内存泄漏。
目前,在应用开发调试过程中,如果发生内存泄漏异常问题,只能从内存泄漏异常的相关日志文件中看到最后报错时应用的堆栈信息,若只利用最后报错时应用的堆栈信息对内存泄漏问题进行处理,需要研发人员重新对应用进行测试并手动抓取应用的调试信息,对内存泄漏异常问题的处理效率较低。
【发明内容】
有鉴于此,本发明实施例提供了一种内存泄漏异常的处理方法、装置和终端设备,用以解决现有技术中对内存泄漏异常问题的处理效率较低的问题。
第一方面,本发明实施例提供了一种内存泄漏异常的处理方法,所述方法包括:
检测应用是否发生内存泄漏;
若检测出应用发生内存泄漏,生成内存泄漏异常的处理方式;
根据所述内存泄漏异常的处理方式,对内存泄漏异常进行异常处理。
在一种可能的实现方式中,所述根据所述内存泄漏异常的处理方式,对内存泄漏异常进行异常处理,具体包括:
创建文件目录和hprof文件名称;
调用Java的生成hprof文件的接口函数;
向所述接口函数输入所述文件目录和所述hprof文件名称,生成所述hprof文件;
关闭所述应用;
清理所述应用占用的内存资源。
在一种可能的实现方式中,所述检测应用是否发生内存泄漏,具体包括:
获取在所述应用中创建新对象所需的内存空间;
检测虚拟机剩余内存空间和垃圾回收器可回收空间;
判断所述虚拟机剩余内存空间是否小于所述创建新对象所需的内存空间且判断所述垃圾回收器可回收空间是否小于所述创建新对象所需的内存空间;
若判断出所述虚拟机剩余内存空间小于所述创建新对象所需的内存空间且判断出所述垃圾回收器可回收空间小于所述创建新对象所需的内存空间,确定出所述应用发生内存泄漏。
在一种可能的实现方式中,所述方法还包括:
获取所述应用发生内存泄漏时的堆栈信息;
生成应用进程名、进程号和内存泄漏异常相关的关键日志文件;
生成所述堆栈信息对应的堆栈信息文件。
在一种可能的实现方式中,所述获取所述应用发生内存泄漏时的堆栈信息包括:
调用Java的try-catch语句捕获所述应用发生内存泄漏时的堆栈信息。
在一种可能的实现方式中,所述根据所述内存泄漏异常的处理方式,对内存泄漏异常进行异常处理,具体还包括:
展示提示窗口,所述提示窗口用于提醒用户应用崩溃。
第二方面,本发明实施例提供了一种内存泄漏异常的处理装置,所述装置包括:
检测模块,用于检测应用是否发生内存泄漏;
第一生成模块,用于若检测出应用发生内存泄漏,生成内存泄漏异常的处理方式;
处理模块,用于根据所述内存泄漏异常的处理方式,对内存泄漏异常进行异常处理。
所述处理模块具体用于创建文件目录和hprof文件名称;调用Java的生成hprof文件的接口函数;向所述接口函数输入所述文件目录和所述hprof文件名称,生成所述hprof文件;关闭所述应用;清理所述应用占用的内存资源。
第三方面,本发明实施例提供了一种终端设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述内存泄漏异常的处理方法的步骤。
第四方面,本发明实施例提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述内存泄漏异常的处理方法的步骤。
本发明实施例提供的内存泄漏异常的处理方法、装置、终端设备和存储介质的技术方案中,通过在终端设备检测出应用发生内存泄漏异常时,生成内存泄漏异常的处理方式,根据内存泄漏异常的处理方式,对内存泄漏异常进行处理,避免了研发人员手动抓取应用的调试信息的繁琐流程,有利于研发人员快速对内存泄漏异常进行处理,提高了内存泄漏异常问题的处理效率。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种内存泄漏异常的处理方法的流程图。
图2为本发明实施例提供的另一种内存泄漏异常的处理方法的流程图。
图3为本发明实施例提供的一种内存泄漏源头的分析方法的流程图。
图4为本发明实施例提供的一种内存泄漏异常的处理装置的结构示意图。
图5为本发明实施例提供的一种终端设备的示意图。
【具体实施方式】
为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,甲和/或乙,可以表示:单独存在甲,同时存在甲和乙,单独存在乙这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图1为本发明实施例提供的一种内存泄漏异常的处理方法的流程图,如图1所示,该方法包括:
步骤101、检测应用是否发生内存泄漏。
本步骤中,获取在应用中创建新对象所需的内存空间;检测虚拟机剩余内存空间和垃圾回收器可回收空间;判断虚拟机剩余内存空间是否小于创建新对象所需的内存空间且判断垃圾回收器可回收空间是否小于创建新对象所需的内存空间;若判断出虚拟机剩余内存空间小于创建新对象所需的内存空间且判断出垃圾回收器可回收空间小于创建新对象所需的内存空间,确定出应用发生内存泄漏;若判断出虚拟机剩余内存空间大于或等于创建新对象所需的内存空间和/或判断出垃圾回收器可回收空间大于或等于创建新对象所需的内存空间,确定出应用未发生内存泄漏。
本发明实施例中,虚拟机指Java虚拟机(Java Virtual Machine,简称JVM),它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。为了实现虚拟机内存的合理回收及再利用,Java提供了垃圾回收机制,垃圾回收机制(GarbageCollection,简称GC)是JVM垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制。需要注意的是,垃圾回收器回收的是无任何引用的对象占据的内存空间,而不是对象本身。本实施例中各步骤可以由终端设备执行。本发明实施例中,终端设备包括但不限于:手机、智能手表、平板电脑、智能电视、车载系统等。
步骤102、若检测出应用发生内存泄漏,生成内存泄漏异常的处理方式。
本发明实施例中,作为一种可选方案,内存泄漏异常的处理方式可包括生成hprof文件、关闭应用以及清理应用占用的内存资源的处理方式。进一步地,内存泄漏异常的处理方式还可以包括展示提示窗口的处理方式,其中,提示窗口用于提醒用户应用崩溃。
本步骤中,生成内存泄漏异常的处理方式后,将内存泄漏异常的处理方式添加到系统的异常处理中。若应用再次发生内存泄漏异常,调用内存泄漏异常的处理方式对内存泄漏异常进行处理。
步骤103、根据内存泄漏异常的处理方式,对内存泄漏异常进行异常处理。
本发明实施例提供的内存泄漏异常的处理方法的技术方案中,通过在终端设备检测出应用发生内存泄漏异常时,生成内存泄漏异常的处理方式,根据内存泄漏异常的处理方式,对内存泄漏异常进行处理,避免了研发人员手动抓取应用的调试信息的繁琐流程,有利于研发人员快速对内存泄漏异常进行处理,提高了内存泄漏异常问题的处理效率。
图2为本发明实施例提供的另一种内存泄漏异常的处理方法的流程图,如图2所示,该方法包括:
步骤201、检测应用是否发生内存泄漏。
本发明实施例中,对步骤201的描述可参见对步骤101的描述,此处不再重复描述。本实施例中各步骤可以由终端设备执行。本发明实施例中,终端设备包括但不限于:手机、智能手表、智能手环、平板电脑、智能电视、车载系统等。
步骤202、若检测出应用发生内存泄漏,生成内存泄漏异常的处理方式。
本发明实施例中,对步骤202的描述可参见对步骤102的描述,此处不再重复描述。
步骤203、创建文件目录和hprof文件名称。
本步骤中,终端设备的应用后台创建文件目录和hprof文件名称,并将文件目录和hprof文件名称保存到系统关于异常处理的目录/data/misc/hprofs下。
步骤204、调用Java的生成hprof文件的接口函数。
本步骤中,终端设备通过调用Debug.dump Hprof Data("hprof Path")接口函数生成hprof文件。其中,Path是计算机名词,通常表示终端设备中系统相关的可执行文件的搜索路径。具体地,hprof文件是一种以二进制堆转储文件,hprof文件中保存了某一时刻Java虚拟机中对象的内存使用信息,是Java进程的内存快照文件,可以帮助研发人员分析应用发生内存泄漏异常的源头,提高内存泄漏异常问题的处理效率。如果想要了解某段时间内Java堆的使用情况,需要通过分析不同时刻生成的hprof文件来找出其中的变化。
步骤205、向接口函数输入文件目录和hprof文件名称,生成hprof文件。
步骤206、关闭应用。
本步骤中,终端设备通过应用调用Process.killprocess自杀,关闭应用进程。
步骤207、清理应用占用的内存资源。
作为一种可选方案,在对内存泄漏异常进行处理过程中,还可以包括如下步骤:展示提示窗口,所述提示窗口用于提醒用户应用崩溃。
步骤208、获取应用发生内存泄漏时的堆栈信息。
本步骤中,终端设备调用Java的try-catch语句捕获应用发生内存泄漏时的堆栈信息。Java的try-catch语句中包含try语句块和catch语句块,为了确保垃圾回收器一定能回收try语句块中的内存空间,一般将finally语句与try-catch语句结合使用。若通过try语句块捕获到异常,确定出应用发生泄漏,此时将通过try语句块捕获到的异常确定为堆栈信息。
步骤209、生成应用进程名、进程号、内存泄漏异常相关的关键日志文件和堆栈信息文件。
本步骤中,根据hprof文件名称生成应用进程名和进程号,其中,hprof文件命名方式为进程名_进程号_报错时间.hprof。例如,终端设备创建的文件名称为com.android.camera2_20224_2021_05_04_17_03_28.hprof,com.android.camera2为应用进程名,20224为进程号,2021_05_04_17_03_28为报错时间,.hprof为文件属性。根据应用发生内存泄漏异常时的堆栈信息,生成内存泄漏异常相关的关键日志文件和堆栈信息文件。生成应用进程名、进程号、内存泄漏异常相关的关键日志文件和堆栈信息文件,以供研发人员根据应用进程名、进程号、内存泄漏异常相关的关键日志文件和堆栈信息文件对应用进行调试。
本发明实施例提供的内存泄漏异常的处理方法的技术方案中,通过在应用发生内存泄漏异常时,调用Java的接口函数生成hprof文件,根据hprof文件对内存泄漏源头进行分析,避免了研发人员手动抓取应用的调试信息的繁琐流程,有利于研发人员快速找到内存泄露源头,对应用进行优化。
作为一种可选方案,本发明实施例中,在对内存泄漏进行异常处理之后,还可以执行对内存泄漏源头进行分析的步骤。图3为本发明实施例提供的一种内存泄漏源头的分析方法的流程图,如图3所示,该方法包括:
步骤301、终端设备将hprof文件发送给计算机设备。
本步骤中,计算机设备接收终端设备发送的hprof文件。本实施例中各步骤可以由计算机设备执行。本发明实施例中计算机设备包括但不限于:安装Windows操作系统,Linux操作系统,或mac OS操作系统的计算机设备。具体地,本发明实施例中计算机设备包括安装各个版本Windows操作系统,Linux操作系统,或mac OS操作系统的计算机设备。具体地,Windows操作系统、Linux操作系统、mac OS操作系统均可以为32位操作系统或64位操作系统。本发明实施例中,Windows操作系统版本包括但不限于:Windows XP、Windows 7、Windows 8、Windows 10和Windows 11;Linux操作系统包括但不限于:Debian、Ubuntu、RHEL、Centos和Slackware;mac OS操作系统包括但不限于:macOS 10.13“High Sierra”、macOS 10.14"Mojave"、macOS 10.15"Catalina"和macOS 11.0"Big Sur"等。
步骤302、计算机设备对hprof文件进行转换,生成转换后的hprof文件。
本步骤中,计算机设备利用安卓系统软件开发工具包(Software DevelopmentKit,简称SDK)的hprof-conv工具对hprof文件进行转换,生成转换后的hprof文件,转换后的hprof文件可以被内存分析器工具(Memory Analyzer tool,简称MAT)识别。
步骤303、计算机设备从转换后的hprof文件中选取第一对象。
本步骤中,计算机设备对转换后的hprof文件进行histogram查询,得到应用中所有对象占用的内存空间大小,并对应用中所有对象按照占用的内存空间大小进行正序排列,选取应用中占用的内存空间最大的对象作为转换后的hprof文件中的第一对象。
步骤304、计算机设备在hprof文件中查找出第一对象占用的实际内存。
步骤305、计算机设备从计算机设备的内存中应用分配给第一对象的内存。
步骤306、计算机设备比较第一对象占用的实际内存和应用分配给第一对象的内存。
步骤307、若计算机设备比较出应用分配给第一对象的内存的大小和转换后的hprof文件中第一对象占用的实际内存的大小之间存在数量级偏差,将第一对象确定为泄露源头。
本步骤中,将应用分配给第一对象的内存的大小和转换后的hprof文件中第一对象占用的实际内存大小用科学计数法进行表示,即表示成a与10的n次幂相乘的形式(1≤|a|<10,a不为分数形式,n为整数),如7×103。若应用分配给第一对象的内存的大小和转换后的hprof文件中第一对象占用的实际内存的大小的n为不同整数,则判断应用分配给第一对象的内存的大小和转换后的hprof文件中第一对象占用的实际内存的大小之间存在数量级偏差,将第一对象确定为泄露源头。
本发明实施例提供的内存泄漏源头的分析方法的技术方案中,通过计算机设备选取应用中占用的内存空间最大的对象作为转换后的hprof文件中的第一对象,获取并比较第一对象占用的实际内存和应用分配给第一对象的内存,从而判断第一对象是否为泄露源头,有利于研发人员快速找到内存泄露源头,进一步提高了内存泄漏异常问题的处理效率。
图4为本发明实施例提供的一种内存泄漏异常的处理装置的结构示意图,如图4所示,该装置包括:检测模块11、第一生成模块12和处理模块13。检测模块11与第一生成模块12连接。第一生成模块12与检测模块11和处理模块13连接。处理模块13与第一生成模块12连接。
检测模块11用于检测应用是否发生内存泄漏。第一生成模块12用于若检测出应用发生内存泄漏,生成内存泄漏异常的处理方式。处理模块13用于根据内存泄漏异常的处理方式,对内存泄漏异常进行异常处理。
本发明实施例中,处理模块13具体用于创建文件目录和hprof文件名称;调用Java的生成hprof文件的接口函数;向接口函数输入文件目录和hprof文件名称,生成hprof文件;关闭应用;清理应用占用的内存资源。
本发明实施例中,检测模块11具体用于获取在应用中创建新对象所需的内存空间;检测虚拟机剩余内存空间和垃圾回收器可回收空间;判断虚拟机剩余内存空间是否小于创建新对象所需的内存空间且判断垃圾回收器可回收空间是否小于创建新对象所需的内存空间;若判断出虚拟机剩余内存空间小于创建新对象所需的内存空间且判断出垃圾回收器可回收空间小于创建新对象所需的内存空间,确定出应用发生内存泄漏。
本发明实施例中,该装置还包括:获取模块14、第二生成模块15和第三生成模块16。获取模块14与处理模块13连接。第二生成模块15与处理模块13连接。第三生成模块16与获取模块14连接。
获取模块14用于获取应用发生内存泄露时的堆栈信息。
第二生成模块15用于生成应用进程名、进程号和内存泄漏异常相关的关键日志文件。
第三生成模块16用于生成堆栈信息对应的堆栈信息文件。
获取模块14具体用于调用Java的try-catch语句捕获所述应用发生内存泄漏时的堆栈信息。
本发明实施例中,处理模块13具体还用于展示提示窗口,提示窗口用于提醒用户应用崩溃。
本发明实施例提供的内存泄漏异常的处理装置的技术方案中,通过在应用发生内存泄漏异常时,装置中的处理模块生成hprof文件,根据hprof文件对内存泄漏源头进行分析,避免了研发人员手动抓取应用的调试信息的繁琐流程,有利于研发人员快速找到内存泄露源头,提高了内存泄漏异常问题的处理效率。
图5为本发明实施例提供的一种终端设备的示意图。如图5所示,如图5所示,该实施例的终端设备20包括:处理器21、存储器22以及存储在存储22中并可在处理器21上运行的计算机程序23,该计算机程序23被处理器21执行时实现实施例中的应用于数据处理方法,为避免重复,此处不一一赘述。或者,该计算机程序被处理器21执行时实现实施例中应用于数据处理装置中各模型/单元的功能,为避免重复,此处不一一赘述。
终端设备20包括,但不仅限于,处理器21、存储器22。本领域技术人员可以理解,5仅仅是终端设备20的示例,并不构成对终端设备20的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器21可以是中央处理单元(Central Processing Unit,简称CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器22可以是终端设备20的内部存储单元,例如终端设备20的硬盘或内存。存储器22也可以是终端设备20的外部存储设备,例如终端设备20上配备的插接式硬盘,智能存储卡(Smart Media Card,简称SMC),安全数字(Secure Digital,简称SD)卡,闪存卡(Flash Card)等。进一步地,存储器22还可以既包括终端设备20的内部存储单元也包括外部存储设备。存储器22用于存储计算机程序以及终端设备所需的其他程序和数据。存储器22还可以用于暂时地存储已经输出或者将要输出的数据。
本发明实施例提供了一种非易失性计算机可读存储介质,该非易失性计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如前述实施例中任一项所述的内存泄漏异常的处理方法的步骤。
上述非易失性计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ReadOnly Memory;以下简称:ROM)、可擦式可编程只读存储器(Erasable Programmable ReadOnly Memory;以下简称:EPROM)或闪存、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (10)

1.一种内存泄漏异常的处理方法,其特征在于,所述方法包括:
检测应用是否发生内存泄漏;
若检测出应用发生内存泄漏,生成内存泄漏异常的处理方式;
根据所述内存泄漏异常的处理方式,对内存泄漏异常进行异常处理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述内存泄漏异常的处理方式,对内存泄漏异常进行异常处理,具体包括:
创建文件目录和hprof文件名称;
调用Java的生成hprof文件的接口函数;
向所述接口函数输入所述文件目录和所述hprof文件名称,生成所述hprof文件;
关闭所述应用;
清理所述应用占用的内存资源。
3.根据权利要求1所述的方法,其特征在于,所述检测应用是否发生内存泄漏,具体包括:
获取在所述应用中创建新对象所需的内存空间;
检测虚拟机剩余内存空间和垃圾回收器可回收空间;
判断所述虚拟机剩余内存空间是否小于所述创建新对象所需的内存空间且判断所述垃圾回收器可回收空间是否小于所述创建新对象所需的内存空间;
若判断出所述虚拟机剩余内存空间小于所述创建新对象所需的内存空间且判断出所述垃圾回收器可回收空间小于所述创建新对象所需的内存空间,确定出所述应用发生内存泄漏。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述应用发生内存泄漏时的堆栈信息;
生成应用进程名、进程号和内存泄漏异常相关的关键日志文件;
生成所述堆栈信息对应的堆栈信息文件。
5.根据权利要求4所述的方法,其特征在于,所述获取所述应用发生内存泄漏时的堆栈信息包括:
调用Java的try-catch语句捕获所述应用发生内存泄漏时的堆栈信息。
6.根据权利要求1所述的方法,其特征在于,所述根据所述内存泄漏异常的处理方式,对内存泄漏异常进行异常处理,具体还包括:
展示提示窗口,所述提示窗口用于提醒用户应用崩溃。
7.一种内存泄漏异常的处理装置,其特征在于,所述装置包括:
检测模块,用于检测应用是否发生内存泄漏;
第一生成模块,用于若检测出应用发生内存泄漏,生成内存泄漏异常的处理方式;
处理模块,用于根据所述内存泄漏异常的处理方式,对内存泄漏异常进行异常处理。
8.根据权利要求7所述的装置,其特征在于,所述处理模块具体用于创建文件目录和hprof文件名称;调用Java的生成hprof文件的接口函数;向所述接口函数输入所述文件目录和所述hprof文件名称,生成所述hprof文件;关闭所述应用;清理所述应用占用的内存资源。
9.一种终端设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-6中任一所述的方法。
10.一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6中任一所述的方法。
CN202111609340.0A 2021-12-24 2021-12-24 一种内存泄漏异常的处理方法、装置和终端设备 Pending CN114218008A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111609340.0A CN114218008A (zh) 2021-12-24 2021-12-24 一种内存泄漏异常的处理方法、装置和终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111609340.0A CN114218008A (zh) 2021-12-24 2021-12-24 一种内存泄漏异常的处理方法、装置和终端设备

Publications (1)

Publication Number Publication Date
CN114218008A true CN114218008A (zh) 2022-03-22

Family

ID=80705989

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111609340.0A Pending CN114218008A (zh) 2021-12-24 2021-12-24 一种内存泄漏异常的处理方法、装置和终端设备

Country Status (1)

Country Link
CN (1) CN114218008A (zh)

Similar Documents

Publication Publication Date Title
US7975257B2 (en) Iterative static and dynamic software analysis
US9043775B2 (en) Method for identifying problematic loops in an application and devices thereof
CN114500043B (zh) 基于同源性分析的物联网固件漏洞检测方法及系统
CN107220175B (zh) 应用程序死循环定位方法、装置、计算机设备和存储介质
WO2017128952A1 (zh) 堆栈的保护方法及装置
CN112149136A (zh) loT设备固件漏洞的检测方法、系统及电子设备
CN105094910A (zh) 一种驱动函数用户态调试系统和方法
CN110704303B (zh) 一种测试覆盖度信息的获取方法及装置
CN109828759B (zh) 代码编译方法、装置、计算机装置及存储介质
US11474795B2 (en) Static enforcement of provable assertions at compile
CN104133763A (zh) 程序调试系统及方法
CN112732475A (zh) 日志收集的方法、装置、电子设备、及存储介质
CN114218008A (zh) 一种内存泄漏异常的处理方法、装置和终端设备
CN110045952B (zh) 代码调用方法与装置
KR20080022889A (ko) 임베디드 시스템에서 디버깅 파일 생성 방법 및 장치
CN110716859A (zh) 自动为修改的代码推送测试用例的方法及相关装置
CN110908882A (zh) 一种应用程序的性能分析方法、装置、终端设备及介质
CN115794583A (zh) 一种内核分析方法及装置
CN113342431B (zh) 函数调用栈回溯、程序异常处理方法、装置、设备及介质
Valdiviezo et al. A method for scalable and precise bug finding using program analysis and model checking
CN111414270B (zh) 一种异常处理方法及装置
CN110908869B (zh) 一种应用程序数据监控方法、装置、设备及储存介质
CN113220586A (zh) 一种自动化的接口压力测试执行方法、装置和系统
CN113467815A (zh) 热更新的应用修复方法、装置、终端设备及存储介质
CN108459940B (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