CN101599048A - 一种内存监控的方法和装置 - Google Patents

一种内存监控的方法和装置 Download PDF

Info

Publication number
CN101599048A
CN101599048A CNA2009101467710A CN200910146771A CN101599048A CN 101599048 A CN101599048 A CN 101599048A CN A2009101467710 A CNA2009101467710 A CN A2009101467710A CN 200910146771 A CN200910146771 A CN 200910146771A CN 101599048 A CN101599048 A CN 101599048A
Authority
CN
China
Prior art keywords
internal memory
operating position
entity
position data
buffer pool
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
CNA2009101467710A
Other languages
English (en)
Other versions
CN101599048B (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 Zhigu Tech Co Ltd
Original Assignee
Fujian Star Net Communication 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 Fujian Star Net Communication Co Ltd filed Critical Fujian Star Net Communication Co Ltd
Priority to CN2009101467710A priority Critical patent/CN101599048B/zh
Publication of CN101599048A publication Critical patent/CN101599048A/zh
Application granted granted Critical
Publication of CN101599048B publication Critical patent/CN101599048B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种内存监控的方法和装置,对使用内存的实体进行内存使用情况监控,内存使用情况数据存储单元中保存有待监控实体的内存使用情况数据,所述待监控实体的内存使用情况数据随着待监控实体的内存使用情况变化,该方法包括:在一个监控周期内,从所述内存使用情况数据存储单元中多次获取所述待监控实体的内存使用情况数据,并将连续两次获取到的内存使用情况数据进行比较;如果每次得到的比较结果都是后一次比前一次所述实体使用内存的总数多,则确定所述实体存在内存泄露现象。利用本发明所提供的方法和装置能够及时的发现系统中不易察觉的内存泄漏问题。

Description

一种内存监控的方法和装置
技术领域
本发明涉及计算机网络通信领域,尤其涉及一种内存监控的方法和装置。
背景技术
目前,计算机系统以及一些网络设备的内存不管容量有多大,均是有限的,因此有效的应用这些内存是一个十分重要的问题。
现有技术中通常采用的内存管理的结构如图1所示,其中,内存管理通常采用双层管理的方式,具体包括:
第一层管理:页分配器101将物理内存切割成一定长度的内核内存页,并管理该内核内存页,根据申请内存的实体的类别将系统中的内存划分到多个缓冲池中进行管理。
第二层管理:Slab分配器102将缓冲池所包含的缓冲区划分为多个Slab(是一种数据结构),Slab是由一个或多个(2N)连续页(页为内存的单元)组成的slab链条,另外,每个slab所包含的多个连续页作为一个整体被分为多个对象单元(也可称为对象体)。
有时候在系统中会出现内存泄露问题,内存泄漏并非指内存在物理上的消失,而是应用程序(即申请和使用内存的实体)在分配某段内存后,由于程序设计上的错误,如未设计释放或者是主观认为不必处理等原因,失去了对该段内存的控制,因而造成了内存的浪费。
另外还存在一种“隐式”内存泄漏,主要表现为:
现象一:程序的一个线程不断分配内存,并将指向内存的指针保存在一个数据存储中(如list),但是在程序运行过程中,一直没有任何线程进行内存释放。当程序退出的时候,该数据存储中的指针值所指向的内存块被依次释放。
现象二:程序的N个线程进行内存分配,并将指针传递给一个数据存储,由M个线程从数据存储进行数据处理和内存释放。由于N远大于M,或者M个线程数据处理的时间过长,导致内存分配的速度远大于内存被释放的速度。但是在程序退出的时候,数据存储中的指针值所指向的内存块被依次释放。
如果在使用内存的过程中存在上述现象则会导以下问题:
问题(1)内存泄露通过开发人员检查代码难以分析出来,逻辑上不易判断;
问题(2)有时,一次内存泄露仅有很小的几个字节,这种情况下,内存泄露需要较长时间的运行之后才能够体现出来。
但无论哪种情况的内存泄露,在用户实际的网络环境中都会导致可用内存量不断降低,导致系统最终无法运行,系统崩溃。
在现有技术中有部分网络管理工具,如简单网络管理协议(Simple NetworkManger Protocol,SNMP)工具可以对设备内存进行查看,但仅限于产品支持的MIB(Management Information Base),获取到的值多数为内存利用率状态,如下图1A所示。
图1A所显示的内容是通过SNMP工具读取的内存MIB信息,输出结果为内存利用率,能够看到内存使用的综合结果,但是该方法仍存在一些问题,如以下提出的问题(3):
问题(3)该方法不能清晰的确认是否已经出现了内存泄漏等系统资源使用异常问题。
另外,现有技术中也有一些是使用代码插桩的检测方法,但会导致系统运行性能大大降低;并且该类检测方法都形成为大型的商业软件,成本代价较高。
问题(4)目前网络设备系统上提供了一种查看接口,如show memory,但仅是信息的罗列,信息量相对比较庞大,列出了所有的任务内存使用情况,列出了不同大小字节类型的使用情况,列出了内存不同缓冲池使用情况,不明确,也不直观。在该类软件产品测试过程中,需要不断的进行show memory类内存信息查看和比对,其中比对内存包括重点关注的字节数统计值,各个重点功能协议内存利用统计值,很容易遗漏,观察面不齐备,难以兼顾,效果不是很好。
发明内容
本发明提供一种内存监控的方法和装置,用于解决现有技中不能及时有效的获知内存泄露显现的问题。
一种内存监控的方法,对使用内存的实体进行内存使用情况监控,待监控实体的内存使用情况数据存储在设定的存储单元中,该方法包括:
在一个监控周期内,从所述存储单元中多次获取待监控实体的内存使用情况数据,并将连续两次获取到的内存使用情况数据进行比较;
如果每次得到的比较结果都是后一次比前一次所述实体使用内存的总数多,则确定所述实体存在内存泄露现象。
一种内存监控的方法,对使用内存的缓冲池进行内存使用情况监控,待监控缓冲池的内存使用情况数据存储在设定的存储单元中,该方法包括:
在一个监控周期内,从所述存储单元中多次获取待监控缓冲池的内存使用情况数据,并将连续两次获取到的内存使用情况数据进行比较;
如果每次得到的比较结果都是后一次比前一次所述实体使用内存的总数多,则确定所述缓冲池存在内存泄露现象。
一种内存监控的装置,对使用内存的实体进行内存使用情况监控,包括:
抽样模块,用于在一个监控周期内,从存储内存使用情况数据的存储单元中多次获取待监控实体的内存使用情况数据;
比较模块,用于将连续两次获取到的内存使用情况数据进行比较,如果每次得到的比较结果都是后一次比前一次所述实体使用内存的总数多,则确定所述实体存在内存泄露现象。
一种内存监控的装置,对缓冲池进行内存使用情况监控,包括:
抽样模块,用于在一个监控周期内,从存储内存使用情况数据的存储单元中多次获取待监控缓冲池的内存使用情况数据;
比较模块,用于将连续两次获取到的内存使用情况数据进行比较,如果每次得到的比较结果都是后一次比前一次所述缓冲池使用内存的总数多,则确定所述缓冲池存在内存泄露现象。通过本发明实施例所提供的方法和装置,通过周期性的获取某个使用内存的实体的内存使用情况数据,从而能够有效监控系统内存泄露现象,另外,在获取内存使用情况数据的同时还设置一定的外部操作,使得抽取到的内存使用情况数据能够更为明显的体现内存泄露问题,因此本发明实施例所提供的方法能够大大缩短内存泄露问题发现周期。
附图说明
图1为现有技术中内存管理的结构图;
图1A为现有技术中网络管理协议工具对设备内存进行查看时的内存使用情况示意图;
图2为本发明实施例一种内存监控方法的流程图;
图2A为本发明一种内存监控方法的实施例1的流程图;
图3为本发明一种内存监控方法的实施例2的流程图;
图4为现有技术中利用show pool命令显示的各缓冲池和实体对应关系和内存使用情况示意图;
图5本发明实施例提供的一种内存监控装置的结构图;
图6本发明实施例针对实施例1所提供的一种内存监控装置的结构图。
具体实施方式
本发明实施例提供一种内存监控的方法和装置,对使用内存的实体进行内存使用情况监控,待监控实体的内存使用情况数据存储在设定的存储单元中,所述待监控实体的内存使用情况数据随着待监控实体的内存使用情况变化,该方法包括:在一个监控周期内,从所述存储单元中多次获取待监控实体的内存使用情况数据,并将连续两次获取到的内存使用情况数据进行比较;如果每次得到的比较结果都是后一次比前一次所述实体使用内存的总数多,则确定所述实体存在内存泄露现象。
如图2所示,本发明实施例一种内存监控的方法,对使用内存的实体进行内存使用情况监控,具体实现方法包括步骤:
步骤201,在一个监控周期内,从存储内存使用情况数据的存储单元中多次获取待监控实体的内存使用情况数据,所述待监控实体的内存使用情况数据随着待监控实体对内存的使用情况而变化。
步骤202,将连续两次获取到的所述实体的内存使用情况数据进行比较,如果每次得到的比较结果都是后一次比前一次所述实体使用内存的总数多,则确定所述实体存在内存泄露现象。
另外,当所述实体使用内存的总数没有一直增长时,为了进一步的确定所述实体是否出现内存泄漏现象,该方法还进一步包括:
步骤203,如果得到的比较结果是后一次所述实体使用内存的总数不大于前一次所述实体使用内存的总数,则将后一次获取到的内存使用情况数据与预先设置的实体使用内存的上限进行比较,如果比较结果为所述实体使用内存的总数比所述预先设置的实体使用内存的上限多,则确定所述实体存在内存泄露现象。
所述实体使用内存的上限依据各实体在实际环境运行中对内存的申请数量、申请频度和功能重要性动态生成。
如图3所示,当所述内存使用情况数据标示的是被监控实体在多个缓冲池中使用内存的使用情况时,则在确定所述实体存在内存泄露现象后,本发明实施例还进一步包括:
步骤204,获取所述被监控实体在各缓冲池中申请的内存的使用情况数据,并确定存在内存泄漏的缓冲池。
实施例1、如图2A所示,一种内存监控的方法,对缓冲池进行内存使用情况监控,具体实现方法包括步骤:
步骤2A01,在一个监控周期内,从内存使用情况数据存储单元中多次获取待监控缓冲池的内存使用情况数据,内存使用情况数据存储单元中保存有待监控缓冲池的内存使用情况数据,所述待监控缓冲池的内存使用情况数据随着缓冲池内存的使用情况而变化。
步骤2A02,将连续两次获取到的所述缓冲池的内存使用情况数据进行比较,如果每次得到的比较结果都是后一次比前一次所述缓冲池使用内存的总数多,则确定所述缓冲池存在内存泄露现象。
另外,当所述缓冲池使用内存的总数没有一直增长时,为了进一步的确定所述缓冲池是否出现内存泄漏现象,该方法还进一步包括:
步骤2A03,如果得到的比较结果是后一次所述实体使用内存的总数不大于前一次所述缓冲池使用内存的总数,则将后一次获取到的内存使用情况数据与预先设置的缓冲池使用内存的上限进行比较,如果比较结果为所述缓冲池使用内存的总数比所述预先设置的缓冲池使用内存的上限多,则确定所述缓冲池存在内存泄露现象。
进一步,因为缓冲池中缓存多个实体使用的内存,为了进一步确定造成内存泄漏的实体,该实施例还包括:
步骤2A04,确定该缓冲池对应的实体,在一个监控周期内,分别从内存使用情况数据存储单元中多次获取待监控实体的内存使用情况数据。
步骤2A05,将连续两次获取到的所述实体的内存使用情况数据进行比较,如果每次得到的比较结果都是后一次比前一次所述实体使用内存的总数多,则确定所述实体存在内存泄露现象。
另外,当所述实体使用内存的总数没有一直增长时,为了进一步的确定所述实体是否出现内存泄漏现象,该方法还进一步包括:
步骤2A06,如果得到的比较结果是后一次所述实体使用内存的总数不大于前一次所述实体使用内存的总数,则将后一次获取到的内存使用情况数据与预先设置的实体使用内存的上限进行比较,如果比较结果为所述实体使用内存的总数比所述预先设置的实体使用内存的上限多,则确定所述实体存在内存泄露现象。
实施例2,如图3所示,在本发明实施例中可以将内存使用情况数据存储于结构体中,所述内存使用情况数据则用结构体变量值标示,而且在本实施例中结构体变量值随实体使用内存总数的增加而增加,则本发明实施例一种内存监控的方法,具体包括步骤:
步骤301,通过预先设置的接口设置对象参数和监控参数,其中所述串口可以是一个命令行界面(CLI,command-line interface)接口;
所述对象参数用于在存储内存使用情况数据的结构体中定位标示所述实体内存使用情况的结构体变量值,该对象参数具体包括:被监控实体的名称(该实体申请和使用内存)和该实体申请内存的缓冲池。
监控参数包括:抽样周期(指在监控过程中抽取内存使用数据的时间间隔)和监控周期(指一次监控的时长)等。
在实际的使用中,通过CLI接口输入的监控参数具体形式可以是:monitor[memory...][OSPF|BGP|LDP|NSM|...][[32|64|128|256...][time][Long][Endtime];
其中,monitor-指明监控的目的,即做什么操作;[memory...]-指明进行监控内存信息;[OSPF|BGP|LDP|NSM|...]-此处方括号内部是可选的,即用于监控哪些任务信息;[[32|64|128|256...]-此处方括号内部是可选的,指明监控哪些缓冲池;[time][Long][Endtime]--是时间参数,用于指明监控的时间间隔,时长或者结束时间等信息。
步骤302,根据所述对象参数从存储内存使用信息的结构体中获取内存使用情况的结构体变量值;当监控对象是实体时,获取的是所述实体的内存使用情况数据,当监控对象是缓冲池时,获取的是所述缓冲池的内存使用情况数据,当同时指定了实体和缓冲池时,获取的是所述实体使用所述缓冲池中内存的内存使用情况数据。
在现有技术中,因为网络设备的所有内存使用数据都储存在系统平台的一个结构体中,其中,该结构体中保存监控实体的名称、实体申请内存的缓冲池的名称与所述标示实体内存使用情况的结构体变量值的对应关系,所述某个实体(该实体可以是任务或者模块)的内存使用情况数据则为一个具体的结构体变量值,其中,存放在所述结构体中的内存使用数据具体内容可以通过具体的显示接口(现有技术中可以通过show pool命令显示)显示,显示的内容可以是如图4所示的形式:
在结构体中的数据包括各缓冲池的名字、使用该缓冲池的多个实体的名称等信息。
这些信息通过结构体进行保存,结构体中存储数据的样式可以是:
    typedef struct pool_stat_s{
    ....
        char          任务名数组[MAX_TASK][BLOCK_NAME_LEN];
        char          缓冲池名数组[MAX_POOL][CACHE_NAMELEN];
        size_t        大小[MAX_POOL][MAX_TASK];
        pool_using_t  use[MAX_POOL][MAX_TASK];/*用于保存中间临
时变量/
    }pool_stat_t;
在对象参数中设定了缓冲池的名称和使用内存的实体的名称,所以通过这两个参数则可从存储内存使用情况数据的结构体中获取标示该实体内存使用情况的结构体变量值,其中,该内存使用情况数据标示该实体所使用的内存大小。
步骤303,将当前获取到的结构体变量值与保存的结构体变量值进行比较,如果当前获取到的结构体变量值大于等于保存的结构体变量值,则应用当前获取的结构体变量值更新保存的内存结构体变量值,并转入步骤304,否则转入步骤306;
步骤304,将比较结果标记为True,并将该比较结果存储到预先设置的结构体变量中。
步骤305,判断监控的总时长是否大于等于预先设置的监控周期,如果是,则输出所述比较结果,并判定被监控的实体存在内存泄露问题,否则在间隔一个抽样周期后执行步骤302。
在本发明实施例中,将获取的内存使用情况数据进行比较的具体实现方式包括:
将获取到的历史数据进行比较时,具体的实现方式包括:
在T1时刻获取表示所述实体内存使用情况的数据1,间隔抽样周期的T2时刻获取表示所述实体内存使用情况的数据2,将数据1和数据2都存储在结构体变量中,数据1存储在预先设置的的结构体变量大小[MAX_POOL][MAX_TASK]中,数据2可以存储在结构体变量use[MAX_POOL][MAX_TASK]中,将大小[MAX_POOL][MAX_TASK]与use[MAX_POOL][MAX_TASK]进行比较,如果:
大小[MAX_POOL][MAX_TASK]<=use[MAX_POOL][MAX_TASK]则存储比较结果为True,并将比较结果存放于BOOL变量中;
在间隔一个抽样周期后的T3时刻获取表示实体内存使用情况的数据3,这时将use[MAX_POOL][MAX_TASK]的值给大小[MAX_POOL][MAX_TASK],将数据3存储到use[MAX_POOL][MAX_TASK]中,再次将大小[MAX_POOL][MAX_TASK]与use[MAX_POOL][MAX_TASK]进行比较。
如果大小[MAX_POOL][MAX_TASK]>=use[MAX_POOL][MAX_TASK]则存储比较结果为False值,在本发明实施例中一旦更新BOOL为False,则终止比较。
在本发明实施例中确定结构体变量值位置的参数信息是组合形式,可以根据监控的需要设置监控的具体信息,本系统则提取上述结构体“stat_s”中的参数进行分析。如,可以对5分钟时间内使用内存最多的或前三位的实体进行抽样监控。
为了在上述方法的基础上更为准确的检测到内存泄露问题,在步骤303中如果当前获取到的内存使用情况数据小于保存的内存使用情况数据,本发明实施例还包括:
步骤306,结束抽样,将当前获取到的标示所述实体内存使用情况的结构体变量值与预设的阀值(L)进行比较,如果当前获取到的结构体变量值大于所述阀值(L),则确定所述实体存在内存泄露现象,其中,所述阀值是任一使用内存的实体所能使用内存的上限值。
其中,所述阀值L动态生成,生成办法是依据各个实体实际环境运行对内存的申请多少、申请频度和模块的功能重要性等来决定,如OSPF模块在网络环境中相对比较重要,决定数据流的转发行为,1千条路由同时申请内存时需要3M内存空间,再根据设备上形成邻居数,如5K路由和50邻居规模,则这1千条路由同时申请约需要20M空间,再将20M空间乘以预留因子1.1(可能还会有一些其他因素的影响),最终确定为22M;
相同的1K条BGP的vpn4路由则需要约384K((128*2+128*邻居数)*路由数)内存空间,另外1K条BGP的vpn4路由的申请的内存空间还受限于设备上的虚拟路由转发(vrf,Virtual Routing Forwarding)实体数量,根据这些因素计算网络规模100K需要内存约为40M,乘以预留因子1.1,即定义为44M。
另外为了能及早的通知用户系统中出现的内存泄露问题,本发明实施例还包括步骤:
307,根据设定的告警方式和格式对所述内存泄露问题进行告警。
其中,告警的方式包括:以web系统的短消息方式、在网络设备的液晶屏上进行信息告警显示、通过各控制终端的追踪(trap)信息以及记录日志(log)的形式等方式。可以选择多个形式并存的方式进行告警。另外在告警信息中可以给出申请非法或者申请超过预定阀值,内存申请异常,当前值是多少等信息。
进一步,为了缩短发现内存泄露问题的时间,本发明实施例所提供的方法,在获取内存使用情况数据的时候,还为该方法的具体实现提供一定的外部条件,具体包括:
A,对于如协议类ospf任务的监控,在指定的时间内,进行多次(如10次)路由的公告和撤销操作,其中,公告和撤销的路由数量可设置为1K条,通过上述多次的路由公告和撤销操作,则使结构体中保存的该任务的内存使用情况数据出现明显的变化,从而通过上述内存监控的方法则可观察到该任务对其占用缓冲池内存空间的操作,即内存的申请和释放行为。这种情形下,如果指定时间内内存持续增加的增量从未减少过,即上述BOOL变量的值一直存储的是True,则确定该监控对象出现了内存泄露;
B,对于如协议类ospf任务的监控,通过一次性将公告的路由数量值设置到最大,如一次公告100K(设备容限为100K),然后将其撤销,较短时间间隔(如3分钟),再次进行该路由公告,如此反复多次(如10次),如果BOOL变量参数为False,多次操作后实际占用内存空间的增长值大于了预期阀值L,则确定ospf任务出现了内存泄露现象。
如图5所示,根据上述方法,对使用内存的实体进行内存使用情况监控,本发明实施例还包括一种内存监控的装置,具体包括:抽样模块501、比较模块502,其中,
抽样模块501,用于在一个监控周期内,从存储内存使用情况数据的存储单元中多次获取待监控实体的内存使用情况数据,所述待监控实体的内存使用情况数据随着待监控实体的内存使用情况变化;
比较模块502,用于将连续两次获取到的内存使用情况数据进行比较,如果每次得到的比较结果都是后一次比前一次所述实体使用内存的总数多,则确定所述实体存在内存泄露现象。
另外当所述实体使用内存的总数没有一直增长时,为了进一步的确定所述实体是否出现内存泄漏现象,则所述比较模块502还用于如果得到的比较结果是后一次所述实体使用内存的总数比前一次少,则将后一次获取到的内存使用情况数据与预先设置的实体使用内存的上限进行比较,如果比较结果为后一次所述实体使用内存的总数比所述实体使用内存的上限多,则确定所述实体存在内存泄露现象。
为了将系统中的内存泄漏问题及时的告知用户,本发明装置还包括:
告警模块503,用于根据设定的告警方式和格式对所述内存泄露现象进行告警。
并且,该告警模块通过以下方式中的一种或几种的组合进行告警:
web系统的短消息方式、在网络设备的液晶屏上进行信息告警显示、通过各控制终端的追踪(trap)信息以及记录日志(log)的形式等方式。
如图6所示,针对图2A所提供的方法本发明实施例还提供一种内存监控的装置,对缓冲池进行内存使用情况监控,该装置包括抽样模块601和比较模块602:
抽样模块601,用于在一个监控周期内,从存储内存使用情况数据的存储单元中多次获取待监控缓冲池的内存使用情况数据;
比较模块602,用于将连续两次获取到的内存使用情况数据进行比较,如果每次得到的比较结果都是后一次比前一次所述缓冲池使用内存的总数多,则确定所述缓冲池存在内存泄露现象。
其中,当比较结果都是后一次比前一次所述缓冲池使用内存的总数少时,为了进一步的确定该缓冲池是否存在内存泄漏现象,所述比较模块602还用于将后一次获取到的内存使用情况数据与预先设置的缓冲池使用内存的上限进行比较,如果比较结果为所述缓冲池使用内存的总数比所述预先设置的缓冲池使用内存的上限多,则确定所述缓冲池存在内存泄露现象。
进一步,在确定某个缓冲池存在内存泄漏问题后,需要确定缓冲池中某个实体导致内存泄漏现象,则该装置还包括实体监控模块603;
所述实体监控模块603,用于确定该缓冲池对应的多个实体,并分别对各实体对该缓冲池的内存使用情况进行监控;在一个监控周期内,从存储内存使用情况数据的存储单元中多次获取各实体对应该缓冲池的内存使用情况数据,并将各实体连续两次获取到的内存使用情况数据进行比较;如果其中有实体每次得到的比较结果都是后一次比前一次使用内存的总数多,则确定所述实体存在内存泄露现象。
通过本发明实施例所提供的方法和装置,周期性的获取某个使用内存的实体的内存使用情况数据,从而能够有效监控系统内存泄露现象,另外,在获取内存使用情况数据的同时还设置一定的外部操作,使得抽取到的内存使用情况数据能够更为明显的体现内存泄露问题,因此本发明实施例所提供的方法能够大大缩短内存泄露问题发现周期。
因为本发明实施例所提供的方法是预先确定监控的实体,所以在确定出现内存泄露问题则可直接定位到造成内存泄露的模块。
本发明实施例还提供监控缓冲池内存使用情况的方法和装置,用户可以从不同的途径监控内存系统中出现的内存泄漏问题。
另外本方法不需要借助外部测试设备,由被测设备系统实现,成本较低;能够及时、直观、形象输出系统哪些任务模块、哪些字节等出现了内存泄露,还能够监控和发现内存使用不合理的模块。
本发明所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员根据本发明的技术方案得出其它的实施方式,同样属于本发明的技术创新范围。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (11)

1、一种内存监控的方法,对使用内存的实体进行内存使用情况监控,其特征在于,待监控实体的内存使用情况数据存储在设定的存储单元中,该方法包括:
在一个监控周期内,从所述存储单元中多次获取待监控实体的内存使用情况数据,并将连续两次获取到的内存使用情况数据进行比较;
如果每次得到的比较结果都是后一次比前一次所述实体使用内存的总数多,则确定所述实体存在内存泄露现象。
2、如权利要求1所述的方法,其特征在于,如果得到的比较结果是后一次所述实体使用内存的总数不大于前一次所述实体使用内存的总数,则该方法进一步包括:
将后一次获取到的内存使用情况数据与预先设置的实体使用内存的上限进行比较,如果比较结果为所述实体使用内存的总数比所述预先设置的实体使用内存的上限多,则确定所述实体存在内存泄露现象。
3、如权利要求1~2任一权项所述的方法,其特征在于,在确定所述实体存在内存泄露现象之后,进一步包括:
根据设定的告警方式和格式对所述内存泄露现象进行告警。
4、如权利要求1~2任一权项所述的方法,其特征在于,当所述内存使用情况数据标示的是被监控实体在多个缓冲池中申请的内存的使用情况时,则在确定所述实体存在内存泄露现象后进一步包括:
分别获取所述被监控实体在所述多个缓冲池中申请的内存的使用情况数据,并根据该使用情况数据确定存在内存泄漏的缓冲池。
5、一种内存监控的方法,对缓冲池进行内存使用情况监控,其特征在于,待监控缓冲池的内存使用情况数据存储在设定的存储单元中,该方法包括:
在一个监控周期内,从所述存储单元中多次获取待监控缓冲池的内存使用情况数据,并将连续两次获取到的内存使用情况数据进行比较;
如果每次得到的比较结果都是后一次比前一次所述实体使用内存的总数多,则确定所述缓冲池存在内存泄露现象。
6、如权利要求5所述的方法,其特征在于,如果得到的比较结果是后一次所述缓冲池使用内存的总数不大于前一次所述缓冲池使用内存的总数,则该方法进一步包括:
将后一次获取到的内存使用情况数据与预先设置的缓冲池使用内存的上限进行比较,如果比较结果为所述缓冲池使用内存的总数比所述预先设置的缓冲池使用内存的上限多,则确定所述缓冲池存在内存泄露现象。
7、如权利要求5或6任一权项所述的方法,其特征在于,所述缓冲池中缓存多个实体使用的内存,则该方法进一步包括:
确定该缓冲池对应的多个实体,并分别对各实体对该缓冲池的内存使用情况进行监控;
在一个监控周期内,从存储内存使用情况数据的存储单元中多次获取各实体对应该缓冲池的内存使用情况数据,并将各实体连续两次获取到的内存使用情况数据进行比较;
如果其中有实体每次得到的比较结果都是后一次比前一次使用内存的总数多,则确定所述实体存在内存泄露现象。
8、一种内存监控的装置,对使用内存的实体进行内存使用情况监控,其特征在于,包括:
抽样模块,用于在一个监控周期内,从存储内存使用情况数据的存储单元中多次获取待监控实体的内存使用情况数据;
比较模块,用于将连续两次获取到的内存使用情况数据进行比较,如果每次得到的比较结果都是后一次比前一次所述实体使用内存的总数多,则确定所述实体存在内存泄露现象。
9、如权利要求10所述的装置,其特征在于,所述比较模块用于如果得到的比较结果是后一次所述实体使用内存的总数比前一次少,则将后一次获取到的内存使用情况数据与预先设置的实体使用内存的上限进行比较,如果比较结果为后一次所述实体使用内存的总数比所述实体使用内存的上限多,则确定所述实体存在内存泄露现象。
10、如权利要求8或9所述的装置,其特征在于,该装置还包括:
告警模块,用于根据设定的告警方式和格式对所述内存泄露现象进行告警。
11、一种内存监控的装置,对缓冲池进行内存使用情况监控,其特征在于,包括:
抽样模块,用于在一个监控周期内,从存储内存使用情况数据的存储单元中多次获取待监控缓冲池的内存使用情况数据;
比较模块,用于将连续两次获取到的内存使用情况数据进行比较,如果每次得到的比较结果都是后一次比前一次所述缓冲池使用内存的总数多,则确定所述缓冲池存在内存泄露现象。
CN2009101467710A 2009-07-01 2009-07-01 一种内存监控的方法和装置 Active CN101599048B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101467710A CN101599048B (zh) 2009-07-01 2009-07-01 一种内存监控的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101467710A CN101599048B (zh) 2009-07-01 2009-07-01 一种内存监控的方法和装置

Publications (2)

Publication Number Publication Date
CN101599048A true CN101599048A (zh) 2009-12-09
CN101599048B CN101599048B (zh) 2012-02-22

Family

ID=41420498

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101467710A Active CN101599048B (zh) 2009-07-01 2009-07-01 一种内存监控的方法和装置

Country Status (1)

Country Link
CN (1) CN101599048B (zh)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101819549A (zh) * 2010-04-13 2010-09-01 东莞宇龙通信科技有限公司 一种内存泄露的定位方法及装置
CN102279797A (zh) * 2011-08-30 2011-12-14 深圳宝德科技集团股份有限公司 一种检测内存泄漏的方法及系统
CN102375776A (zh) * 2010-08-18 2012-03-14 康佳集团股份有限公司 一种嵌入式设备及其检测和定位内存泄漏的方法
CN102681938A (zh) * 2012-05-15 2012-09-19 青岛海信移动通信技术股份有限公司 一种内存泄漏检测方法及装置
CN103473172A (zh) * 2013-09-05 2013-12-25 无敌科技(西安)有限公司 检查后台程序内存泄露并定位泄露内存点的系统及方法
CN104133761A (zh) * 2013-11-28 2014-11-05 腾讯科技(成都)有限公司 一种移动终端的内存占用分析方法、装置和系统
CN104182320A (zh) * 2013-05-23 2014-12-03 联想(北京)有限公司 一种监控内存泄漏的方法及装置
CN104182332A (zh) * 2013-05-21 2014-12-03 华为技术有限公司 判断资源泄漏、预测资源使用情况的方法及装置
CN104239184A (zh) * 2014-09-22 2014-12-24 北京金山安全软件有限公司 终端异常应用程序的识别方法、装置和移动终端
CN104298569A (zh) * 2014-09-30 2015-01-21 北京金山安全软件有限公司 应用程序运行异常的检测方法、装置和移动终端
CN104516817A (zh) * 2012-05-15 2015-04-15 青岛海信移动通信技术股份有限公司 一种内存泄漏检测方法及装置
CN104778087A (zh) * 2014-01-09 2015-07-15 中国移动通信集团山东有限公司 一种信息处理方法以及信息处理装置
CN105487971A (zh) * 2014-12-22 2016-04-13 哈尔滨安天科技股份有限公司 一种软件测试中操作步骤记录和复现的方法及系统
CN105988919A (zh) * 2015-03-02 2016-10-05 阿里巴巴集团控股有限公司 Java型web容器内存使用量检测方法及相关装置
CN106055478A (zh) * 2016-05-31 2016-10-26 腾讯科技(深圳)有限公司 检测内存泄漏的方法和装置
CN106354627A (zh) * 2016-07-21 2017-01-25 努比亚技术有限公司 一种应用程序内存泄漏的检测方法及系统
CN103914366B (zh) * 2013-01-05 2017-05-31 腾讯科技(深圳)有限公司 一种自动监测应用程序进行内存信息的方法及装置
CN106789383A (zh) * 2015-11-20 2017-05-31 北京奇虎科技有限公司 路由器系统监测方法与装置
CN107957950A (zh) * 2017-12-08 2018-04-24 锐捷网络股份有限公司 一种系统资源泄露的检测方法和装置
CN108073441A (zh) * 2016-11-14 2018-05-25 阿里巴巴集团控股有限公司 一种虚拟机内存监管方法与设备
CN108415823A (zh) * 2017-04-10 2018-08-17 平安科技(深圳)有限公司 一种规则验证方法及终端
CN109343961A (zh) * 2018-10-12 2019-02-15 Oppo广东移动通信有限公司 内存信息的处理方法、装置、存储介质及终端
CN109408383A (zh) * 2018-10-12 2019-03-01 北京宝兰德软件股份有限公司 一种Java内存泄漏分析方法及装置

Cited By (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101819549B (zh) * 2010-04-13 2012-10-10 东莞宇龙通信科技有限公司 一种内存泄露的定位方法及装置
CN101819549A (zh) * 2010-04-13 2010-09-01 东莞宇龙通信科技有限公司 一种内存泄露的定位方法及装置
CN102375776A (zh) * 2010-08-18 2012-03-14 康佳集团股份有限公司 一种嵌入式设备及其检测和定位内存泄漏的方法
CN102279797A (zh) * 2011-08-30 2011-12-14 深圳宝德科技集团股份有限公司 一种检测内存泄漏的方法及系统
CN104516817A (zh) * 2012-05-15 2015-04-15 青岛海信移动通信技术股份有限公司 一种内存泄漏检测方法及装置
CN102681938A (zh) * 2012-05-15 2012-09-19 青岛海信移动通信技术股份有限公司 一种内存泄漏检测方法及装置
CN102681938B (zh) * 2012-05-15 2015-02-18 青岛海信移动通信技术股份有限公司 一种内存泄漏检测方法及装置
CN104516817B (zh) * 2012-05-15 2017-09-29 青岛海信移动通信技术股份有限公司 一种内存泄漏检测方法及装置
CN103914366B (zh) * 2013-01-05 2017-05-31 腾讯科技(深圳)有限公司 一种自动监测应用程序进行内存信息的方法及装置
CN104182332A (zh) * 2013-05-21 2014-12-03 华为技术有限公司 判断资源泄漏、预测资源使用情况的方法及装置
US9846601B2 (en) 2013-05-21 2017-12-19 Huawei Technologies Co., Ltd. Method and apparatuses for determining a leak of resource and predicting usage of resource
CN104182332B (zh) * 2013-05-21 2017-09-29 华为技术有限公司 判断资源泄漏、预测资源使用情况的方法及装置
CN104182320A (zh) * 2013-05-23 2014-12-03 联想(北京)有限公司 一种监控内存泄漏的方法及装置
CN104182320B (zh) * 2013-05-23 2017-09-29 联想(北京)有限公司 一种监控内存泄漏的方法及装置
CN103473172A (zh) * 2013-09-05 2013-12-25 无敌科技(西安)有限公司 检查后台程序内存泄露并定位泄露内存点的系统及方法
CN104133761A (zh) * 2013-11-28 2014-11-05 腾讯科技(成都)有限公司 一种移动终端的内存占用分析方法、装置和系统
CN104778087A (zh) * 2014-01-09 2015-07-15 中国移动通信集团山东有限公司 一种信息处理方法以及信息处理装置
CN104239184A (zh) * 2014-09-22 2014-12-24 北京金山安全软件有限公司 终端异常应用程序的识别方法、装置和移动终端
CN104239184B (zh) * 2014-09-22 2018-03-06 北京金山安全软件有限公司 终端异常应用程序的识别方法、装置和移动终端
CN104298569A (zh) * 2014-09-30 2015-01-21 北京金山安全软件有限公司 应用程序运行异常的检测方法、装置和移动终端
CN105487971A (zh) * 2014-12-22 2016-04-13 哈尔滨安天科技股份有限公司 一种软件测试中操作步骤记录和复现的方法及系统
CN105988919B (zh) * 2015-03-02 2018-12-25 阿里巴巴集团控股有限公司 Java型web容器内存使用量检测方法及相关装置
CN105988919A (zh) * 2015-03-02 2016-10-05 阿里巴巴集团控股有限公司 Java型web容器内存使用量检测方法及相关装置
CN106789383A (zh) * 2015-11-20 2017-05-31 北京奇虎科技有限公司 路由器系统监测方法与装置
CN106055478A (zh) * 2016-05-31 2016-10-26 腾讯科技(深圳)有限公司 检测内存泄漏的方法和装置
CN106055478B (zh) * 2016-05-31 2020-09-22 腾讯科技(深圳)有限公司 检测内存泄漏的方法和装置
CN106354627A (zh) * 2016-07-21 2017-01-25 努比亚技术有限公司 一种应用程序内存泄漏的检测方法及系统
CN108073441A (zh) * 2016-11-14 2018-05-25 阿里巴巴集团控股有限公司 一种虚拟机内存监管方法与设备
CN108073441B (zh) * 2016-11-14 2022-05-10 阿里巴巴集团控股有限公司 一种虚拟机内存监管方法与设备
WO2018188538A1 (zh) * 2017-04-10 2018-10-18 平安科技(深圳)有限公司 规则验证方法、终端及存储介质
CN108415823A (zh) * 2017-04-10 2018-08-17 平安科技(深圳)有限公司 一种规则验证方法及终端
CN107957950B (zh) * 2017-12-08 2020-08-25 锐捷网络股份有限公司 一种系统资源泄露的检测方法和装置
CN107957950A (zh) * 2017-12-08 2018-04-24 锐捷网络股份有限公司 一种系统资源泄露的检测方法和装置
CN109343961A (zh) * 2018-10-12 2019-02-15 Oppo广东移动通信有限公司 内存信息的处理方法、装置、存储介质及终端
CN109408383A (zh) * 2018-10-12 2019-03-01 北京宝兰德软件股份有限公司 一种Java内存泄漏分析方法及装置
CN109408383B (zh) * 2018-10-12 2023-04-14 北京宝兰德软件股份有限公司 一种Java内存泄漏分析方法及装置

Also Published As

Publication number Publication date
CN101599048B (zh) 2012-02-22

Similar Documents

Publication Publication Date Title
CN101599048B (zh) 一种内存监控的方法和装置
CN110493080B (zh) 一种区块链节点监控方法、装置及电子设备和存储介质
JP6025753B2 (ja) パフォーマンス・メトリックを監視するためのコンピュータによって実施される方法、コンピュータ可読記憶媒体、およびシステム
US8635484B2 (en) Event based correlation of power events
CN103399781B (zh) 云服务器及其虚拟机管理方法
CN101515247B (zh) 一种内存监控的方法和装置
CN106210124B (zh) 一种统一的云数据中心监控系统
CN107168841A (zh) 一种移动设备的远程测试方法和装置
CN103220173A (zh) 一种报警监控方法及监控系统
CN103473115A (zh) 虚拟机放置方法和装置
CN114328102A (zh) 设备状态监控方法、装置、设备及计算机可读存储介质
CN102984582B (zh) 搭载操作系统的智能电视系统管理方法及装置
CN104462612A (zh) 一种监控数据库信息的方法和设备
CN105278949A (zh) 用于基于接收到的测量来确定阈值基线的方法和装置
CN111464331B (zh) 一种线程创建的控制方法、系统及终端设备
CN110278101A (zh) 一种资源管理方法及设备
CN108072858A (zh) 电能表质量管理方法、系统及终端设备
US9218205B2 (en) Resource management in ephemeral environments
CN202713533U (zh) 电视机的诊断和维护系统与电视机
CN106899436A (zh) 一种云平台故障预测诊断系统
CN101639816A (zh) 一种总线的实时跟踪系统及相应的跟踪、调试方法
CN110928940B (zh) 基于kafka集群的数据写入方法、装置、电子设备、存储介质
CN114090382B (zh) 超融合集群健康巡检方法和装置
CN110457179A (zh) 系统检测方法、内存监控方法、装置、介质与电子设备
CN115687026A (zh) 多节点服务器故障预警方法、装置、设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: BEIJING Z-GOOD TECHNOLOGY SERVICE CO., LTD.

Free format text: FORMER OWNER: FUJIAN XINGWANGRUIJIE NETWORK CO., LTD.

Effective date: 20140821

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 350015 FUZHOU, FUJIAN PROVINCE TO: 100085 HAIDIAN, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20140821

Address after: 100085 Beijing city Haidian District No. 33 Xiaoying Road 1 1F06 room

Patentee after: BEIJING ZHIGU TECHNOLOGY SERVICES CO., LTD.

Address before: 350015 M9511 Industrial Park, fast road, Mawei District, Fujian, Fuzhou

Patentee before: Fujian Xingwangruijie Network Co., Ltd.

EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20091209

Assignee: Fujian Xingwangruijie Network Co., Ltd.

Assignor: BEIJING ZHIGU TECHNOLOGY SERVICES CO., LTD.

Contract record no.: 2014990000853

Denomination of invention: Method and device for monitoring memory

Granted publication date: 20120222

License type: Common License

Record date: 20141105

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model