CN105243003A - 内存分配的监测方法及装置 - Google Patents
内存分配的监测方法及装置 Download PDFInfo
- Publication number
- CN105243003A CN105243003A CN201510572104.4A CN201510572104A CN105243003A CN 105243003 A CN105243003 A CN 105243003A CN 201510572104 A CN201510572104 A CN 201510572104A CN 105243003 A CN105243003 A CN 105243003A
- Authority
- CN
- China
- Prior art keywords
- file
- memory
- information
- line number
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000012544 monitoring process Methods 0.000 title claims abstract description 22
- 230000006870 function Effects 0.000 claims description 8
- 238000012806 monitoring device Methods 0.000 claims 1
- 230000015556 catabolic process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种内存分配的监测方法及装置。该方法,包括:获取文件信息和内存信息,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号;根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。实现了对程序运行的过程中内存占用量的实时监测,从而避免了内存泄漏,进而减少了系统崩溃的几率。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种内存分配的监测方法及装置。
背景技术
系统在程序运行的过程中,可能发生频繁死机或无法正常工作的现象,即系统崩溃。
导致系统崩溃的原因很多,比如,系统中存在病毒,或者,运行的程序中存在漏洞(bug),或者,内存泄漏等。其中,内存泄露是指在程序运行时,系统不断的为正在运行的程序分配内存,并将指向内存的指针保存在一个数据存储中,直到程序退出时,才依次释放指针所指向的内存块,该指针为存储在数据存储中的指针。
系统在运行程序的过程中,若内存占用量不断增加,则可能导致内存泄漏,从而产生系统崩溃,然而,本领域技术人员发现,现有技术中无法对程序运行的过程中内存占用量进行实时监测。
发明内容
本发明提供一种内存分配的监测方法及装置,用以解决无法对程序运行的过程中内存占用量进行实时监测的问题。
本发明的第一个方面是提供一种内存分配的监测方法,包括:
获取文件信息和内存信息,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号;
根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。
进一步的,所述获取文件信息和内存信息,还包括:
将所述文件信息和所述内存信息存储在消息队列中,所述消息队列包括文件名称、文件行号和为所述文件行号分配的内存信息。
进一步的,所述根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量,包括:
根据所述文件名称对应的文件标识和所述消息队列,确定所述文件行号指示的文件占用的内存总量。
进一步的,所述获取文件信息和内存信息之后,还包括:
根据所述文件信息和所述消息队列,确定所述文件名称标示的文件占用的总内存量;
将所述内存总量与所述总内存量相除,获得内存百分比;
若所述内存百分比大于一预设值,则确定存在内存泄漏;
若所述内存百分比小于或等于一预设值,则确定不存在内存泄漏。
进一步的,所述获取文件信息和内存信息之前,还包括:
在申请内存模块函数中设置获取所述文件信息和所述内存信息。
本发明的第额个方面是提供一种内存分配的监测装置,包括:
获取模块,用于获取文件信息和内存信息,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号;
确定模块,用于根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。
进一步的,还包括:存储模块,
所述存储模块,用于将所述文件信息和所述内存信息存储在消息队列中,所述消息队列包括文件名称、文件行号和为所述文件行号分配的内存信息。
进一步的,所述确定模块,具体用于根据所述文件名称对应的文件标识和所述消息队列,确定所述文件行号指示的文件占用的内存总量。
进一步的,所述确定模块,还用于根据所述文件信息和所述消息队列,确定所述文件名称标示的文件占用的总内存量;将所述内存总量与所述总内存量相除,获得内存百分比;若所述内存百分比大于一预设值,则确定存在内存泄漏;若所述内存百分比小于或等于一预设值,则确定不存在内存泄漏。
进一步的,所述获取模块,还用于在申请内存模块函数中设置获取所述文件信息和所述内存信息。
本发明提供一种内存分配的监测方法及装置。通过获取文件信息和内存信息,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号;根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。实现了对程序运行的过程中内存占用量的实时监测,从而避免了内存泄漏,进而减少了系统崩溃的几率。
附图说明
图1为本发明内存分配的监测方法一实施例的流程示意图;
图2为本发明内存分配的监测装置一实施例的结构示意图;
图3为本发明内存分配的监测装置二实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明内存分配的监测方法一实施例的流程示意图,如图1所示,内存分配的监测方法,包括:
步骤101、获取文件信息和内存信息。
在本实施例中,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号。
本实施例的适用场景是在linux下运行程序并分配内存时,例如,在调用申请内存模块(new)函数时。本实施例中的文件可以理解为正在运行的程序。
步骤102、根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。
在本实施例中,文件行号占用的内存总量是指,为文件行号指示的文件分配的内存且未释放的内存总量。
具体的,如果在连续多个时间间隔的统计结果中,某一文件行号对应的文件所分配的内存总量不断增长而始终没有减少,则可能会造成隐式内存泄漏。
在本实施例中,获取文件信息和内存信息,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号;根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。实现了对程序运行的过程中内存占用量的实时监测,从而避免了内存泄漏,进而减少了系统崩溃的几率。
在上述实施例的基础上,所述获取文件信息和内存信息,还包括:
将所述文件信息和所述内存信息存储在消息队列中,所述消息队列包括文件名称、文件行号和为所述文件行号分配的内存信息。
需要说明的是,该消息队列是通过文件标识组成的索引值创建的,在内存分配时,将分配信息写入到消息队列,该分配信息包括分配内存的文件名称、文件行号、内存信息。在内存释放执行时,在消息队列中删除内存分配。或者,在一时长周期内,对内存分配进行一次统计分析,即通过文件标识,确定通过文件标识创建的消息队列,再根据文件行号,确定该文件行号对应的内存信息。
进一步的,在上述实施例的基础上,所述根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量,包括:
根据所述文件名称对应的文件标识和所述消息队列,确定所述文件行号指示的文件占用的内存总量。
更进一步的,在上述实施例的基础上,所述获取文件信息和内存信息之后,还包括:
根据所述文件信息和所述消息队列,确定所述文件名称标示的文件占用的总内存量;
将所述内存总量与所述整个进程占用的总内存量相除,获得内存百分比;
若所述内存百分比大于一预设值,则确定存在内存泄漏;
若所述内存百分比小于或等于一预设值,则确定不存在内存泄漏。
在本实施例中,通过对内存泄漏的判断,可以避免内存泄漏的发生,进而减少了系统崩溃的几率
可选的,在上述实施例的基础上,所述获取文件信息和内存信息之前,还包括:
在申请内存模块函数中设置获取所述文件信息和所述内存信息。
举例来讲,重写new内存分配函数,用于记录检测信息中的文件名及文件行号及分配的内存大小。本发明采用预编译宏__FILE__和__LINE__在编译时在指定位置展开为该文件的文件名和该行的行号。
图2为本发明内存分配的监测装置一实施例的结构示意图。如图2所示,该内存分配的监测装置,包括:获取模块21和确定模块22。其中,
获取模块21,用于获取文件信息和内存信息,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号;
确定模块22,用于根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。
获取文件信息和内存信息,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号;根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。实现了对程序运行的过程中内存占用量的实时监测,从而避免了内存泄漏,进而减少了系统崩溃的几率。
图3为本发明内存分配的监测装置二实施例的结构示意图。如图3所示,该内存分配的监测装置,还可以包括:存储模块23,
所述存储模块23,用于将所述文件信息和所述内存信息存储在消息队列中,所述消息队列包括文件名称、文件行号和为所述文件行号分配的内存信息。
在上述实施例的基础上,所述确定模块22,具体用于根据所述文件名称对应的文件标识和所述消息队列,确定所述文件行号指示的文件占用的内存总量。
在上述实施例的基础上,所述确定模块22,还用于根据所述文件信息和所述消息队列,确定所述文件名称标示的文件占用的总内存量;将所述内存总量与所述总内存量相除,获得内存百分比;若所述内存百分比大于一预设值,则确定存在内存泄漏;若所述内存百分比小于或等于一预设值,则确定不存在内存泄漏。
在上述实施例的基础上,所述获取模块21,还用于在申请内存模块函数中设置获取所述文件信息和所述内存信息。
在本实施例中,实现了对程序运行的过程中内存占用量的实时监测,从而避免了内存泄漏,进而减少了系统崩溃的几率。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种内存分配的监测方法,其特征在于,包括:
获取文件信息和内存信息,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号;
根据所述文件信息和所述内存信息,确定所述文件行号指示的文件占用的内存总量。
2.根据权利要求1所述的方法,其特征在于,所述获取文件信息和内存信息,还包括:
将所述文件信息和所述内存信息存储在消息队列中,所述消息队列包括文件名称、文件行号和为所述文件行号分配的内存信息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述文件信息和所述内存信息,确定所述文件行号指示的文件占用的内存总量,包括:
根据所述文件名称对应的文件标识和所述消息队列,确定所述文件行号指示的文件占用的内存总量。
4.根据权利要求3所述的方法,其特征在于,所述获取文件信息和内存信息之后,还包括:
根据所述文件信息和所述消息队列,确定所述文件名称标示的文件占用的总内存量;
将所述内存总量与所述总内存量相除,获得内存百分比;
若所述内存百分比大于一预设值,则确定存在内存泄漏;
若所述内存百分比小于或等于一预设值,则确定不存在内存泄漏。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述获取文件信息和内存信息之前,还包括:
在申请内存模块函数中设置获取所述文件信息和所述内存信息。
6.一种内存分配的监测装置,其特征在于,包括:
获取模块,用于获取文件信息和内存信息,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号;
确定模块,用于根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。
7.根据权利要求6所述的装置,其特征在于,还包括:存储模块,
所述存储模块,用于将所述文件信息和所述内存信息存储在消息队列中,所述消息队列包括文件名称、文件行号和为所述文件行号分配的内存信息。
8.根据权利要求7所述的装置,其特征在于,所述确定模块,具体用于根据所述文件名称对应的文件标识和所述消息队列,确定所述文件行号指示的文件占用的内存总量。
9.根据权利要求8所述的装置,其特征在于,所述确定模块,还用于根据所述文件信息和所述消息队列,确定所述文件名称标示的文件占用的总内存量;将所述内存总量与所述总内存量相除,获得内存百分比;若所述内存百分比大于一预设值,则确定存在内存泄漏;若所述内存百分比小于或等于一预设值,则确定不存在内存泄漏。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述获取模块,还用于在申请内存模块函数中设置获取所述文件信息和所述内存信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510572104.4A CN105243003A (zh) | 2015-09-09 | 2015-09-09 | 内存分配的监测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510572104.4A CN105243003A (zh) | 2015-09-09 | 2015-09-09 | 内存分配的监测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105243003A true CN105243003A (zh) | 2016-01-13 |
Family
ID=55040656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510572104.4A Pending CN105243003A (zh) | 2015-09-09 | 2015-09-09 | 内存分配的监测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105243003A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107145582A (zh) * | 2017-05-09 | 2017-09-08 | 深圳Tcl新技术有限公司 | 数据库游标的控制方法与数据库系统 |
CN107423220A (zh) * | 2017-08-04 | 2017-12-01 | 青岛海信宽带多媒体技术有限公司 | 内存泄露的检测方法及装置、电子设备 |
WO2019037118A1 (zh) * | 2017-08-25 | 2019-02-28 | 深圳传音通讯有限公司 | 内存使用情况的测试方法与电子终端 |
CN112162893A (zh) * | 2020-10-30 | 2021-01-01 | 新华三大数据技术有限公司 | 一种内存泄漏定位方法、装置及电子设备 |
CN118502972A (zh) * | 2024-07-19 | 2024-08-16 | 厦门星纵数字科技有限公司 | 基于TCMalloc内存分配器动态调整缓存的方法、装置及程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078682A1 (en) * | 2002-09-19 | 2004-04-22 | Jaw-Shiang Huang | Operating system based method and computer program for monitoring and notifying computer hardware status |
CN103268287A (zh) * | 2013-06-05 | 2013-08-28 | 福州瑞芯微电子有限公司 | 检测内存泄露的方法与装置 |
CN104182320A (zh) * | 2013-05-23 | 2014-12-03 | 联想(北京)有限公司 | 一种监控内存泄漏的方法及装置 |
-
2015
- 2015-09-09 CN CN201510572104.4A patent/CN105243003A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078682A1 (en) * | 2002-09-19 | 2004-04-22 | Jaw-Shiang Huang | Operating system based method and computer program for monitoring and notifying computer hardware status |
CN104182320A (zh) * | 2013-05-23 | 2014-12-03 | 联想(北京)有限公司 | 一种监控内存泄漏的方法及装置 |
CN103268287A (zh) * | 2013-06-05 | 2013-08-28 | 福州瑞芯微电子有限公司 | 检测内存泄露的方法与装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107145582A (zh) * | 2017-05-09 | 2017-09-08 | 深圳Tcl新技术有限公司 | 数据库游标的控制方法与数据库系统 |
CN107145582B (zh) * | 2017-05-09 | 2022-01-04 | 深圳Tcl新技术有限公司 | 数据库游标的控制方法与数据库系统 |
CN107423220A (zh) * | 2017-08-04 | 2017-12-01 | 青岛海信宽带多媒体技术有限公司 | 内存泄露的检测方法及装置、电子设备 |
WO2019037118A1 (zh) * | 2017-08-25 | 2019-02-28 | 深圳传音通讯有限公司 | 内存使用情况的测试方法与电子终端 |
CN112162893A (zh) * | 2020-10-30 | 2021-01-01 | 新华三大数据技术有限公司 | 一种内存泄漏定位方法、装置及电子设备 |
CN118502972A (zh) * | 2024-07-19 | 2024-08-16 | 厦门星纵数字科技有限公司 | 基于TCMalloc内存分配器动态调整缓存的方法、装置及程序产品 |
CN118502972B (zh) * | 2024-07-19 | 2024-09-27 | 厦门星纵数字科技有限公司 | 基于TCMalloc内存分配器动态调整缓存的方法、装置及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105243003A (zh) | 内存分配的监测方法及装置 | |
CN106681811B (zh) | 基于线程池的多线程调度方法及装置 | |
CN106933733B (zh) | 一种确定内存泄露位置的方法和装置 | |
US20160041848A1 (en) | Methods and Apparatuses for Determining a Leak of Resource and Predicting Usage Condition of Resource | |
EP3171274B1 (en) | Resource leak detecting method and apparatus | |
CN104503912A (zh) | 一种服务响应过程的监测方法及装置 | |
CN106326082B (zh) | 网络系统中记录日志的方法和装置 | |
CN110851415A (zh) | 一种车载系统的日志数据处理方法和装置 | |
CN112445686A (zh) | 内存泄漏检测方法、装置以及计算机可读存储介质 | |
CN105260639A (zh) | 一种脸部识别系统的数据更新的方法及装置 | |
CN108509322B (zh) | 避免过度回访的方法、电子装置及计算机可读存储介质 | |
GB2605053A (en) | Authentication mechanism utilizing location corroboration | |
CN113923002B (zh) | 计算机网络入侵防御方法、装置、存储介质及处理器 | |
CN109284193B (zh) | 一种基于多线程的分布式数据处理方法及服务器 | |
CN110209548B (zh) | 服务控制方法、系统、电子设备及计算机可读存储介质 | |
CN114297630A (zh) | 恶意数据的检测方法、装置、存储介质及处理器 | |
US9778969B2 (en) | Automatic memory leak detection | |
CN105243011A (zh) | 内存泄露定位方法及装置 | |
CN105260140A (zh) | 磁盘容量监控方法及装置 | |
CN109816993B (zh) | 一种车辆急加速行为的识别方法及相关设备 | |
CN109165305B (zh) | 一种特征值存储、检索方法及装置 | |
CN108121602B (zh) | 一种确定垃圾收集触发点的方法、电子设备及存储介质 | |
CN106855824B (zh) | 一种任务停止方法、装置及电子设备 | |
CN113485846A (zh) | 一种内存处理方法及装置 | |
CN112631821A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160113 |
|
RJ01 | Rejection of invention patent application after publication |