CN110633190A - 一种应用程序内存监控方法、装置、设备及存储介质 - Google Patents

一种应用程序内存监控方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110633190A
CN110633190A CN201910920107.0A CN201910920107A CN110633190A CN 110633190 A CN110633190 A CN 110633190A CN 201910920107 A CN201910920107 A CN 201910920107A CN 110633190 A CN110633190 A CN 110633190A
Authority
CN
China
Prior art keywords
memory
overflow
information
application program
determining
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.)
Granted
Application number
CN201910920107.0A
Other languages
English (en)
Other versions
CN110633190B (zh
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.)
Beijing Bo Hongyuan Data Polytron Technologies Inc
Original Assignee
Beijing Bo Hongyuan Data Polytron Technologies Inc
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 Beijing Bo Hongyuan Data Polytron Technologies Inc filed Critical Beijing Bo Hongyuan Data Polytron Technologies Inc
Priority to CN201910920107.0A priority Critical patent/CN110633190B/zh
Publication of CN110633190A publication Critical patent/CN110633190A/zh
Application granted granted Critical
Publication of CN110633190B publication Critical patent/CN110633190B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本发明实施例公开了一种应用程序内存监控方法、装置、设备及存储介质,方法包括:通过预设内存分配函数指针获取内存分配信息;根据所述内存分配信息确定溢出内存信息;根据所述溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。本发明实施例的技术方案能够实现在不影响App运行性能的前提下,在用户的真实使用场景下全面、实时地监测App在运行过程中的内存分配与占用情况。

Description

一种应用程序内存监控方法、装置、设备及存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种应用程序内存监控方法、装置、设备及存储介质。
背景技术
移动应用作为直接面向用户的终端,其运行的性能情况是每个移动开发者最为关注的问题之一。由于移动设备硬件与资源的限制,应用程序(Application,App)在运行过程中因为种种原因而造成的资源使用分配不当,出现内存资源占用过高甚至内存泄露的情况发生时,极易出现应用程序卡死甚至被系统强行停止的情况,导致用户使用的服务突然中断,体验极差。
目前,iOS系统中监控应用程序运行的内存占用主要有以下几种方案:iOS系统官方提供的Allocation内存分析工具;Facebook(FB,脸谱)开源的FBAllocationTracker内存分析工具;开源的OOMDetector内存分析组件。
发明人在实现本发明的过程中,发现现有技术存在如下缺陷:
Allocation内存分析工具无法在App中独立运行,只能在调试阶段连接IDE(Integrated Device Electronics,集成设备电路)调试。另外,Allocation内存分析工具的性能也比较差,连接大型App进行调试时容易引发卡死问题。FBAllocationTracker内存分析工具虽然可以在App中独立运行,但是其监控范围窄,只能监控OC(Objective-C)对象,对于C++对象和malloc(memory allocation,动态内存分配)内存块以及VM(VirtualMachine虚拟机内存)内存无法监控。OOMDetector内存分析组件在检测内存时需要挂起线程,针对内存区域进行整体扫描,整个过程比较耗时,会卡住程序长达1-2秒钟,其适用与在测试阶段发现内存问题,无法在用户的真实环境下实时监控App的内存占用情况。
发明内容
本发明实施例提供一种应用程序内存监控方法、装置、设备及存储介质,实现在不影响App运行性能的前提下,在用户的真实使用场景下全面、实时地监测App在运行过程中的内存分配与占用情况。
第一方面,本发明实施例提供了一种应用程序内存监控方法,包括:
通过预设内存分配函数指针获取内存分配信息;
根据所述内存分配信息确定溢出内存信息;
根据所述溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。
第二方面,本发明实施例还提供了一种应用程序内存监控装置,包括:
内存分配信息获取模块,用于通过预设内存分配函数指针获取内存分配信息;
溢出内存信息确定模块,用于根据所述内存分配信息确定溢出内存信息;
发生位置确定模块,用于根据所述溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。
第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的应用程序内存监控方法。
第四方面,本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所提供的应用程序内存监控方法。
本发明实施例根据通过预设内存分配函数指针获取的内存分配信息确定溢出内存信息,并根据溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置,解决现有应用程序内存监控方法存在的兼容性、适用性和时效性较差等问题,实现在不影响App运行性能的前提下,在用户的真实使用场景下全面、实时地监测App在运行过程中的内存分配与占用情况。
附图说明
图1a是本发明实施例一提供的一种应用程序内存监控方法的流程图;
图1b是本发明实施例一应用程序内存监控方法的流程图;
图1c是本发明实施例一提供的一种排除误判事件影响内存占用信息的流程图;
图2是本发明实施例二提供的一种应用程序内存监控装置的示意图;
图3为本发明实施例三提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。
另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1a是本发明实施例一提供的一种应用程序内存监控方法的流程图,本实施例可适用于全面、实时地监控应用程序内存的情况,该方法可以由应用程序内存监控装置来执行,该装置可以由软件和/或硬件的方式来实现,并一般可集成在计算机设备中。相应的,如图1a所示,该方法包括如下操作:
S110、通过预设内存分配函数指针获取内存分配信息。
其中,预设内存分配函数指针可以是用于获取内存分配信息的函数指针,如malloc_logger指针、hook calloc或realloc等内存分配函数,本发明实施例并不对预设内存分配函数的具体类型进行限定。
在本发明实施例中,可以首先通过预设内存分配函数指针获取内存分配信息。具体的,可以通过预设内存分配函数指针获取堆空间的内存分配信息。
S120、根据所述内存分配信息确定溢出内存信息。
其中,溢出内存信息可以是当前内存信息中,超出系统允许占用最大内存容量的内存信息。
相应的,在获取到内存分配信息后,可以进一步根据内存分配信息确定溢出内存信息。
在本发明的一个可选实施例中,所述根据所述内存分配信息确定溢出内存信息,可以包括:将所述内存分配信息中超出设定内存阈值的内存信息作为所述溢出内存信息。
其中,设定内存阈值可以是根据实际需求所设定的阈值,如2G等,本发明实施例并不对设定内存阈值的具体数值进行限定。
具体的,可以将内存分配信息中超出设定内存阈值的内存信息作为溢出内存信息。
S130、根据所述溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。
其中,应用程序的运行状态可以包括在前台运行或在后台运行。
相应的,在根据内存分配信息确定溢出内存信息之后,即可根据溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。
图1b是本发明实施例一应用程序内存监控方法的流程图,在一个具体的例子中,如图1b所示,当App开始启动后,如果确定当前App未处于调试状态,则可以创建一个拥有最高优先级的线程,以监控全局的事件缓冲区event_buffer。具体的,可以通过hook alloc内存分配函数监控OC的内存分配,通过malloc_logger指针监控malloc方式的内存分配,通过设置syscall_logger指针监控VM方式的内存分配。然后根据监控到的内存分配信息生成模型,并将模型数据拼接到全局event_buffer中。进一步的,预先创建的拥有最高优先级的线程可以检查event_buffer中是否出现新数据,若是,则可以将新数据写入数据库,否则休眠15ms,并再次更新检查。其中,休眠时间还可以根据实际需求设定。
在本发明的一个可选实施例中,所述根据所述溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置,可以包括:对所述溢出内存信息进行备份保存;从保存的所述溢出内存信息中排除误判事件的内存占用信息,得到目标溢出内存信息;根据所述目标溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。
其中,误判事件可以是可以导致App停止运行的非OOM(Out Of Memory,内存溢出)事件。示例性的,App升级、调用exit()或abort()、App崩溃、用户强行终止App、系统升级或重启等均可以判定为误判事件,只要是可以导致App停止运行的非OOM事件均可以作为误判事件,本发明实施例并不对误判事件的具体事件类型进行限定。目标溢出内存信息可以是OOM事件所导致的溢出内存信息。
在本发明实施例中,可选的,可以将溢出内存信息备份至应用沙盒进行备份保存,然后从保存的溢出内存信息中排除误判事件的内存占用信息,过滤掉外部因素造成的内存占用误判的情况,进而得到目标溢出内存信息,并根据目标溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。
在本发明的一个可选实施例中,所述根据所述目标溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置,可以包括:如果所述应用程序在前台运行,则确定内存溢出的发生位置为前台;如果所述应用程序在后台运行,则确定内存溢出的发生位置为后台。
相应的,在本发明的一个可选实施例中,在所述根据所述目标溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置之后,还可以包括:如果确定内存溢出的发生位置为前台,则在前台杀死所述应用程序的进程;如果确定内存溢出的发生位置为后台,则在后台杀死所述应用程序的进程。
图1c是本发明实施例一提供的一种排除误判事件影响内存占用信息的流程图。在一个具体的例子中,如图1c所示,从应用沙盒中取出本地数据即保存的备份溢出内存信息后,可以查询溢出内存信息产生时的App状态。在确定App未升级、未调用exit()或abort()、未出现崩溃、未被用户强退且系统未处于升级或重启状态后,进一步判断App是否在后台运行。如果App未在后台运行,则确定App在前台消耗内存过多,可以在前台杀死App的进程,即FOOM(Foreground out of memory)。
在本发明的一个可选实施例中,在所述通过预设内存分配函数指针获取内存分配信息之后,还可以包括:在主线程中挂起所有子线程;遍历内存分区,确定目标泄露内存。
其中,内存分区可以包括但不限于堆区、栈区、全局区及寄存器等。
在本发明实施例中,App启动时,可以通过设置malloc_logger指针、hook calloc或realloc等内存分配函数获取内存分配信息。然后在主线程中挂起所有子线程,并遍历堆区、栈区、全局区及寄存器等内存分区,以寻找没有被指针指向的内存块区域,即确定目标泄露内存。
在本发明的一个可选实施例中,所述通过预设内存分配函数指针获取内存分配信息之后,还可以包括:根据预先绑定的追踪内存泄露方法判断是否发生内存泄露。
其中,任何可以实现内存泄露追踪功能的方法均可以作为追踪内存泄露方法,如willDealloc方法等,本发明实施例并不对追踪内存泄露方法的具体类型进行限定。
在本发明实施例中,在监控OC的内存分配时,可以为OC的对象基类NSObject添加一个-willDealloc方法,该方法的作用是,先用一个弱指针指向self(指针),并在经过一小段时间(如3秒)后,使用指向self的弱指针调用-assertNotDelloc方法。如果assertNotDelloc方法调用成功则说明发生了内存泄露。
综上所述,本发明实施例所提供的应用程序内存监控方法能够实现与App在用户移动设备彼此独立运行,并全面检测App在运行过程中的内存分配与占用情况。因此,本发明实施例所提供的应用程序内存监控方法能够最大程度降低对App运行性能的影响,并在用户的真实使用场景下实时监控内存占用情况。
本发明实施例根据通过预设内存分配函数指针获取的内存分配信息确定溢出内存信息,并根据溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置,解决现有应用程序内存监控方法存在的兼容性、适用性和时效性较差等问题,实现在不影响App运行性能的前提下,在用户的真实使用场景下全面、实时地监测App在运行过程中的内存分配与占用情况。
实施例二
图2是本发明实施例二提供的一种应用程序内存监控装置的示意图,如图2所示,所述装置包括:内存分配信息获取模块210、溢出内存信息确定模块220以及发生位置确定模块230,其中:
内存分配信息获取模块210,用于通过预设内存分配函数指针获取内存分配信息;
溢出内存信息确定模块220,用于根据所述内存分配信息确定溢出内存信息;
发生位置确定模块230,用于根据所述溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。
本发明实施例根据通过预设内存分配函数指针获取的内存分配信息确定溢出内存信息,并根据溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置,解决现有应用程序内存监控方法存在的兼容性、适用性和时效性较差等问题,实现在不影响App运行性能的前提下,在用户的真实使用场景下全面、实时地监测App在运行过程中的内存分配与占用情况。
可选的,溢出内存信息确定模块220,具体用于将所述内存分配信息中超出设定内存阈值的内存信息作为所述溢出内存信息。
可选的,发生位置确定模块230,具体用于对所述溢出内存信息进行备份保存;从保存的所述溢出内存信息中排除误判事件的内存占用信息,得到目标溢出内存信息;根据所述目标溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。
可选的,发生位置确定模块230,具体用于如果所述应用程序在前台运行,则确定内存溢出的发生位置为前台;如果所述应用程序在后台运行,则确定内存溢出的发生位置为后台。
可选的,所述装置还包括:进程杀死模块,用于如果确定内存溢出的发生位置为前台,则在前台杀死所述应用程序的进程;如果确定内存溢出的发生位置为后台,则在后台杀死所述应用程序的进程。
可选的,所述装置还包括:目标泄露内存确定模块,用于在主线程中挂起所有子线程;遍历内存分区,确定目标泄露内存。
可选的,所述装置还包括:内存泄露判断模块,用于根据预先绑定的追踪内存泄露方法判断是否发生内存泄露。
上述应用程序内存监控装置可执行本发明任意实施例所提供的应用程序内存监控方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的应用程序内存监控方法。
由于上述所介绍的应用程序内存监控装置为可以执行本发明实施例中的应用程序内存监控方法的装置,故而基于本发明实施例中所介绍的应用程序内存监控方法,本领域所属技术人员能够了解本实施例的应用程序内存监控装置的具体实施方式以及其各种变化形式,所以在此对于该应用程序内存监控装置如何实现本发明实施例中的应用程序内存监控方法不再详细介绍。只要本领域所属技术人员实施本发明实施例中应用程序内存监控方法所采用的装置,都属于本申请所欲保护的范围。
实施例三
图3为本发明实施例三提供的一种计算机设备的结构示意图。图3示出了适于用来实现本发明实施方式的计算机设备312的框图。图3显示的计算机设备312仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图3所示,计算机设备312以通用计算设备的形式表现。计算机设备312的组件可以包括但不限于:一个或者多个处理器316,存储装置328,连接不同系统组件(包括存储装置328和处理器316)的总线318。
总线318表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。
计算机设备312典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备312访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储装置328可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory,RAM)330和/或高速缓存存储器332。计算机设备312可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统334可以用于读写不可移动的、非易失性磁介质(图3未显示,通常称为“硬盘驱动器”)。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如只读光盘(Compact Disc-Read Only Memory,CD-ROM)、数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线318相连。存储装置328可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块326的程序336,可以存储在例如存储装置328中,这样的程序模块326包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块326通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备312也可以与一个或多个外部设备314(例如键盘、指向设备、摄像头、显示器324等)通信,还可与一个或者多个使得用户能与该计算机设备312交互的设备通信,和/或与使得该计算机设备312能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(Input/Output,I/O)接口322进行。并且,计算机设备312还可以通过网络适配器320与一个或者多个网络(例如局域网(Local Area Network,LAN),广域网Wide Area Network,WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器320通过总线318与计算机设备312的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备312使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(Redundant Arraysof Independent Disks,RAID)系统、磁带驱动器以及数据备份存储系统等。
处理器316通过运行存储在存储装置328中的程序,从而执行各种功能应用以及数据处理,例如实现本发明上述实施例所提供的应用程序内存监控方法。
也即,所述处理单元执行所述程序时实现:通过预设内存分配函数指针获取内存分配信息;根据所述内存分配信息确定溢出内存信息;根据所述溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。
实施例四
本发明实施例四还提供一种存储计算机程序的计算机存储介质,所述计算机程序在由计算机处理器执行时用于执行本发明上述实施例任一所述的应用程序内存监控方法:通过预设内存分配函数指针获取内存分配信息;根据所述内存分配信息确定溢出内存信息;根据所述溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(Read Only Memory,ROM)、可擦式可编程只读存储器((Erasable Programmable ReadOnly Memory,EPROM)或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、射频(Radio Frequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种应用程序内存监控方法,其特征在于,包括:
通过预设内存分配函数指针获取内存分配信息;
根据所述内存分配信息确定溢出内存信息;
根据所述溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。
2.根据权利要求1所述的方法,其特征在于,所述根据所述内存分配信息确定溢出内存信息,包括:
将所述内存分配信息中超出设定内存阈值的内存信息作为所述溢出内存信息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置,包括:
对所述溢出内存信息进行备份保存;
从保存的所述溢出内存信息中排除误判事件的内存占用信息,得到目标溢出内存信息;
根据所述目标溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置,包括:
如果所述应用程序在前台运行,则确定内存溢出的发生位置为前台;
如果所述应用程序在后台运行,则确定内存溢出的发生位置为后台。
5.根据权利要求4所述的方法,其特征在于,在所述根据所述目标溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置之后,还包括:
如果确定内存溢出的发生位置为前台,则在前台杀死所述应用程序的进程;
如果确定内存溢出的发生位置为后台,则在后台杀死所述应用程序的进程。
6.根据权利要求1所述的方法,其特征在于,在所述通过预设内存分配函数指针获取内存分配信息之后,还包括:
在主线程中挂起所有子线程;
遍历内存分区,确定目标泄露内存。
7.根据权利要求1所述的方法,其特征在于,所述通过预设内存分配函数指针获取内存分配信息之后,还包括:
根据预先绑定的追踪内存泄露方法判断是否发生内存泄露。
8.一种应用程序内存监控装置,其特征在于,包括:
内存分配信息获取模块,用于通过预设内存分配函数指针获取内存分配信息;
溢出内存信息确定模块,用于根据所述内存分配信息确定溢出内存信息;
发生位置确定模块,用于根据所述溢出内存信息以及应用程序的运行状态确定内存溢出的发生位置。
9.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的应用程序内存监控方法。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的应用程序内存监控方法。
CN201910920107.0A 2019-09-26 2019-09-26 一种应用程序内存监控方法、装置、设备及存储介质 Active CN110633190B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910920107.0A CN110633190B (zh) 2019-09-26 2019-09-26 一种应用程序内存监控方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910920107.0A CN110633190B (zh) 2019-09-26 2019-09-26 一种应用程序内存监控方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN110633190A true CN110633190A (zh) 2019-12-31
CN110633190B CN110633190B (zh) 2023-08-29

Family

ID=68974435

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910920107.0A Active CN110633190B (zh) 2019-09-26 2019-09-26 一种应用程序内存监控方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110633190B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984496A (zh) * 2020-07-16 2020-11-24 北京字节跳动网络技术有限公司 一种监控栈内存泄露的方法、装置、介质和电子设备
CN111984401A (zh) * 2020-07-24 2020-11-24 五八有限公司 一种内存溢出管理方法、装置、电子设备及存储介质
CN113900867A (zh) * 2021-09-06 2022-01-07 浪潮软件股份有限公司 检测ios内存泄漏的方法、装置及计算机可读介质
WO2024139359A1 (zh) * 2022-12-30 2024-07-04 千寻位置网络有限公司 程序内存的溢出预警方法、系统、电子设备和计算机存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140195703A1 (en) * 2013-01-10 2014-07-10 Agilent Technologies, Inc. Electronic system subject to memory overflow condition
CN106610892A (zh) * 2015-10-23 2017-05-03 腾讯科技(深圳)有限公司 内存泄漏检测方法和装置
CN107908954A (zh) * 2017-11-13 2018-04-13 湖南大学 一种基于地址压缩技术的动态检测gpu上内存溢出的方法
CN109582442A (zh) * 2018-11-30 2019-04-05 北京微播视界科技有限公司 内存溢出oom的处理方法、电子设备及计算机存储介质
CN109656779A (zh) * 2018-12-07 2019-04-19 广州市百果园信息技术有限公司 内存监控方法、装置、终端和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140195703A1 (en) * 2013-01-10 2014-07-10 Agilent Technologies, Inc. Electronic system subject to memory overflow condition
CN106610892A (zh) * 2015-10-23 2017-05-03 腾讯科技(深圳)有限公司 内存泄漏检测方法和装置
CN107908954A (zh) * 2017-11-13 2018-04-13 湖南大学 一种基于地址压缩技术的动态检测gpu上内存溢出的方法
CN109582442A (zh) * 2018-11-30 2019-04-05 北京微播视界科技有限公司 内存溢出oom的处理方法、电子设备及计算机存储介质
CN109656779A (zh) * 2018-12-07 2019-04-19 广州市百果园信息技术有限公司 内存监控方法、装置、终端和存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984496A (zh) * 2020-07-16 2020-11-24 北京字节跳动网络技术有限公司 一种监控栈内存泄露的方法、装置、介质和电子设备
CN111984496B (zh) * 2020-07-16 2024-04-16 北京字节跳动网络技术有限公司 一种监控栈内存泄露的方法、装置、介质和电子设备
CN111984401A (zh) * 2020-07-24 2020-11-24 五八有限公司 一种内存溢出管理方法、装置、电子设备及存储介质
CN113900867A (zh) * 2021-09-06 2022-01-07 浪潮软件股份有限公司 检测ios内存泄漏的方法、装置及计算机可读介质
WO2024139359A1 (zh) * 2022-12-30 2024-07-04 千寻位置网络有限公司 程序内存的溢出预警方法、系统、电子设备和计算机存储介质

Also Published As

Publication number Publication date
CN110633190B (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
CN110633190B (zh) 一种应用程序内存监控方法、装置、设备及存储介质
US11720368B2 (en) Memory management of data processing systems
US8612937B2 (en) Synchronously debugging a software program using a plurality of virtual machines
CN110046479B (zh) 一种基于安卓操作系统的链接库文件反调试方法及装置
TW201335752A (zh) 記憶體檢測系統及方法
CN111858112B (zh) 一种检测内存泄露的方法、客户端及服务器
US20240095174A1 (en) Method for detecting error of operating system kernel memory in real time
CN110597704B (zh) 应用程序的压力测试方法、装置、服务器和介质
CN110688245B (zh) 信息获取方法、装置、存储介质及设备
US20120284313A1 (en) Monitoring heap in real-time by a mobile agent to assess performance of virtual machine
CN114765051A (zh) 内存测试方法及装置、可读存储介质、电子设备
US8935516B2 (en) Enabling portions of programs to be executed on system z integrated information processor (zIIP) without requiring programs to be entirely restructured
CN111638952A (zh) 一种内存转储方法、装置及电子设备
US7657792B2 (en) Identifying race conditions involving asynchronous memory updates
US8145819B2 (en) Method and system for stealing interrupt vectors
CN113515448A (zh) 应用程序启动时间信息的获取方法及装置
US8954932B2 (en) Crash notification between debuggers
CN102736974A (zh) 程序除错系统及方法
US20080114971A1 (en) Branch history table for debug
CN108197005B (zh) Ios应用的底层运行性能监测方法、介质、设备及系统
CN114296986B (zh) 内存泄漏定位方法、装置、介质和电子设备
US11994937B2 (en) Automated recovery mechanism from a system crash
CN114443442B (zh) 日志存储方法及电子设备
US8719638B2 (en) Assist thread analysis and debug mechanism
CN113760631B (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
GR01 Patent grant
GR01 Patent grant