内存分配的监测方法及装置的制造方法

文档序号:9489365阅读:399来源:国知局
内存分配的监测方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种内存分配的监测方法及装置。
【背景技术】
[0002]系统在程序运行的过程中,可能发生频繁死机或无法正常工作的现象,即系统崩溃。
[0003]导致系统崩溃的原因很多,比如,系统中存在病毒,或者,运行的程序中存在漏洞(bug),或者,内存泄漏等。其中,内存泄露是指在程序运行时,系统不断的为正在运行的程序分配内存,并将指向内存的指针保存在一个数据存储中,直到程序退出时,才依次释放指针所指向的内存块,该指针为存储在数据存储中的指针。
[0004]系统在运行程序的过程中,若内存占用量不断增加,则可能导致内存泄漏,从而产生系统崩溃,然而,本领域技术人员发现,现有技术中无法对程序运行的过程中内存占用量进行实时监测。

【发明内容】

[0005]本发明提供一种内存分配的监测方法及装置,用以解决无法对程序运行的过程中内存占用量进行实时监测的问题。
[0006]本发明的第一个方面是提供一种内存分配的监测方法,包括:
[0007]获取文件信息和内存信息,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号;
[0008]根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。
[0009]进一步的,所述获取文件信息和内存信息,还包括:
[0010]将所述文件信息和所述内存信息存储在消息队列中,所述消息队列包括文件名称、文件行号和为所述文件行号分配的内存信息。
[0011]进一步的,所述根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量,包括:
[0012]根据所述文件名称对应的文件标识和所述消息队列,确定所述文件行号指示的文件占用的内存总量。
[0013]进一步的,所述获取文件信息和内存信息之后,还包括:
[0014]根据所述文件信息和所述消息队列,确定所述文件名称标示的文件占用的总内存量;
[0015]将所述内存总量与所述总内存量相除,获得内存百分比;
[0016]若所述内存百分比大于一预设值,则确定存在内存泄漏;
[0017]若所述内存百分比小于或等于一预设值,则确定不存在内存泄漏。
[0018]进一步的,所述获取文件信息和内存信息之前,还包括:
[0019]在申请内存模块函数中设置获取所述文件信息和所述内存信息。
[0020]本发明的第额个方面是提供一种内存分配的监测装置,包括:
[0021]获取模块,用于获取文件信息和内存信息,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号;
[0022]确定模块,用于根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。
[0023]进一步的,还包括:存储模块,
[0024]所述存储模块,用于将所述文件信息和所述内存信息存储在消息队列中,所述消息队列包括文件名称、文件行号和为所述文件行号分配的内存信息。
[0025]进一步的,所述确定模块,具体用于根据所述文件名称对应的文件标识和所述消息队列,确定所述文件行号指示的文件占用的内存总量。
[0026]进一步的,所述确定模块,还用于根据所述文件信息和所述消息队列,确定所述文件名称标示的文件占用的总内存量;将所述内存总量与所述总内存量相除,获得内存百分比;若所述内存百分比大于一预设值,则确定存在内存泄漏;若所述内存百分比小于或等于一预设值,则确定不存在内存泄漏。
[0027]进一步的,所述获取模块,还用于在申请内存模块函数中设置获取所述文件信息和所述内存信息。
[0028]本发明提供一种内存分配的监测方法及装置。通过获取文件信息和内存信息,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号;根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。实现了对程序运行的过程中内存占用量的实时监测,从而避免了内存泄漏,进而减少了系统崩溃的几率。
【附图说明】
[0029]图1为本发明内存分配的监测方法一实施例的流程示意图;
[0030]图2为本发明内存分配的监测装置一实施例的结构示意图;
[0031]图3为本发明内存分配的监测装置二实施例的结构示意图。
【具体实施方式】
[0032]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0033]图1为本发明内存分配的监测方法一实施例的流程示意图,如图1所示,内存分配的监测方法,包括:
[0034]步骤101、获取文件信息和内存信息。
[0035]在本实施例中,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号。
[0036]本实施例的适用场景是在linux下运行程序并分配内存时,例如,在调用申请内存模块(new)函数时。本实施例中的文件可以理解为正在运行的程序。
[0037]步骤102、根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。
[0038]在本实施例中,文件行号占用的内存总量是指,为文件行号指示的文件分配的内存且未释放的内存总量。
[0039]具体的,如果在连续多个时间间隔的统计结果中,某一文件行号对应的文件所分配的内存总量不断增长而始终没有减少,则可能会造成隐式内存泄漏。
[0040]在本实施例中,获取文件信息和内存信息,所述文件信息包括触发分配内存的文件名称和文件行号,所述内存信息包括为执行所述文件行号指示的文件所分配的内存信息,所述文件行号为所述文件名称指示的文件的行号;根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量。实现了对程序运行的过程中内存占用量的实时监测,从而避免了内存泄漏,进而减少了系统崩溃的几率。
[0041]在上述实施例的基础上,所述获取文件信息和内存信息,还包括:
[0042]将所述文件信息和所述内存信息存储在消息队列中,所述消息队列包括文件名称、文件行号和为所述文件行号分配的内存信息。
[0043]需要说明的是,该消息队列是通过文件标识组成的索引值创建的,在内存分配时,将分配信息写入到消息队列,该分配信息包括分配内存的文件名称、文件行号、内存信息。在内存释放执行时,在消息队列中删除内存分配。或者,在一时长周期内,对内存分配进行一次统计分析,即通过文件标识,确定通过文件标识创建的消息队列,再根据文件行号,确定该文件行号对应的内存信息。
[0044]进一步的,在上述实施例的基础上,所述根据所述文件信息和内存信息,确定所述文件行号指示的文件占用的内存总量,包括:
[0045]根据所述文件名称对应的文件标识和所述消息队列,确定所述文件行号指示
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1