公开/公告号CN103914366A
专利类型发明专利
公开/公告日2014-07-09
原文格式PDF
申请/专利权人 腾讯科技(深圳)有限公司;
申请/专利号CN201310002004.9
发明设计人 杜磊;
申请日2013-01-05
分类号G06F11/34;
代理机构北京德琦知识产权代理有限公司;
代理人阎敏
地址 518044 广东省深圳市福田区振兴路赛格科技园2栋东403室
入库时间 2024-02-19 23:58:24
法律状态公告日
法律状态信息
法律状态
2017-05-31
授权
授权
2014-10-29
实质审查的生效 IPC(主分类):G06F11/34 申请日:20130105
实质审查的生效
2014-07-09
公开
公开
技术领域
本发明涉及内存监测技术领域,尤其涉及一种自动监测应用程序内存信 息的方法及装置。
背景技术
现有对应用程序进行内存监测的方案主要分为两种,一种是针对应用程序 整体的内存监控,一种是针对应用程序局部操作的内存监控。
以安卓(Android)应用程序为例,Android程序内存被分为2部分:native 和dalvik,dalvik即为堆,创建的对象在这里进行分配。dalvik的值用堆的大小 (Heapsize)表示。监测Heapsize的方式如下:
第一种,对应用程序整体的内存监控,操作步骤如下:对应用程序进行常 规功能测试,每隔一段时间(时间可以根据需要人为设定,比如1分钟,3分钟, 5分钟)使用Dalvik虚拟机调试监控服务(DDMS,Dalvik Debug Monitor Service) 或者命令行,查看heapsize的值并记录到一个新的excel表格或者txt文档中。 测试一段时间后(一般为3-4小时),根据excel或者txt文档的数据,画出heapsize 随时间变化的曲线图,分析应用程序是否有内存泄露的风险。一般情况下,若 heapsize曲线随着时间整体是上升趋势,则说明应用程序有内存溢出(OOM) 的风险。
第二种,对应用程序局部操作的内存监控,操作步骤如下:对应用程序的 某个局部操作(比如点击某个按钮,者滑动页面,或者几个操作的组合等)进 行测试,每进行一次操作后,使用DDMS或者命令行,查看heapsize的值并记 录到一个新的excel表格或者txt文档中。测试一段时间后(一般为10-15分钟), 根据excel或者txt文档的数据,画出heapsize随时间变化的曲线图,分析该局 部操作是否会有导致应用程序发生内存泄露的风险。一般情况下,若heapsize 曲线随着时间整体是上升趋势,则说明该局部操作有导致应用程序发生内存溢 出(OOM)的风险。
上述监测过程中,记录内存信息和绘图的步骤是由测试人员人工执行的, 因此会消耗大量的人力和时间成本,并存在误操作的潜在风险。
发明内容
本发明提供了一种自动监测应用程序内存信息的方法和装置,能够自动 实现对应用程序内存信息的监测,节约人力和时间成本,消除误操作的风险。
本发明的技术方案是这样实现的:
一种自动监测应用程序内存信息的方法,包括:
当预先设置的针对信息记录的第一计时器到期时,将内存信息保存入文件, 并将所述第一计时器置为0,重新开始计时;
当预先设置的针对绘图的第二计时器到期时,采用所述文件中的内存信息 绘制内存信息曲线图,并将所述第二计时器置为0,重新开始计时。
上述方法中,所述当第一计时器到期时将内存信息保存入文件之前进一步 包括:按照预先设定的周期监测应用程序,获取所述应用程序的内存信息,将 获取的内存信息以末尾增加的方式保存在数组中;
当预先设置的第一计时器到期时,将所述数组中的内存信息保存入文件, 并将所述数组中的内容删除。
上述方法中,将内存信息保存入文件的方式为:当所述第一计时器第一次 到期时,创建新的文件,将内存信息保存入所述文件;当所述第一计时器再次 到期时,在所述文件原有内容的基础上继续写入内存信息。
上述方法中,采用文件中的内存信息绘制内存信息曲线图的方式为:当所 述第二计时器第一次到期时,采用文件中的内存信息绘制内存信息曲线图,保 存所述内存信息曲线图;当所述第二计时器再次到期时,采用文件中的内存信 息绘制内存信息曲线图,保存所述内存信息曲线图,并删除前一次保存的内存 信息曲线图。
上述方法中,应用程序的内存信息可以为安卓(Android)程序的堆大小 (Heapsize)信息;
获取应用程序的内存信息的方式可以为:使用Dalvik虚拟机调试监控服务 (DDMS)或者命令行获取Android程序的Heapsize信息;
所述文件的格式为:.xls格式或.txt格式;
所述内存信息曲线图的格式为:.png格式或.jpg格式。
一种自动监测应用程序内存信息的装置,包括:
保存模块,用于当预先设置的针对信息记录的第一计时器到期时,将内存 信息保存入文件,并将所述第一计时器置为0,重新开始计时;
绘图模块,用于当预先设置的针对绘图的第二计时器到期时,采用所述文 件中的内存信息绘制内存信息曲线图,并将所述第二计时器置为0,重新开始计 时。
上述装置还包括:信息获取模块,用于按照预先设定的周期监测应用程序, 获取所述应用程序的内存信息,将获取的内存信息以末尾增加的方式保存在数 组中;
所述保存模块在预先设置的第一计时器到期时,将所述数组中的内存信息 保存入文件,并将所述数组中的内容删除。
上述装置中,保存模块将内存信息保存入文件的方式为:当所述第一计时 器第一次到期时,保存模块创建新的文件,将内存信息保存入所述文件;当所 述第一计时器再次到期时,保存模块在所述文件原有内容的基础上继续写入内 存信息。
上述装置中,绘图模块采用文件中的内存信息绘制内存信息曲线图的方式 为:当所述第二计时器第一次到期时,绘图模块采用文件中的内存信息绘制内 存信息曲线图,保存所述内存信息曲线图;当所述第二计时器再次到期时,绘 图模块采用文件中的内存信息绘制内存信息曲线图,保存所述内存信息曲线图, 并删除前一次保存的内存信息曲线图。
上述装置中,应用程序的内存信息可以为安卓(Android)程序的堆大小 (Heapsize)信息;
所述信息获取模块使用Dalvik虚拟机调试监控服务(DDMS)或者命令行 获取Android程序的Heapsize信息;
所述文件的格式为:.xls格式或.txt格式;
所述内存信息曲线图的格式为:.png格式或.jpg格式。
可见,本发明提出的自动监测应用程序内存信息的方法和装置,通过设 置定时器,自动记录应用程序的内存信息并绘图,从而实现节约人力和时间 成本,消除误操作的风险。
附图说明
图1为本发明提出的自动监测应用程序内存信息的方法流程图;
图2为本发明实施例一中获取内存信息的实现流程图;
图3为监测工具界面示意图;
图4为本发明实施例一中记录内存信息的实现流程图;
图5为本发明实施例一中绘制曲线图的实现流程图;
图6为本发明提出的自动监测应用程序内存信息的装置结构示意图。
具体实施方式
本发明提出一种自动监测应用程序内存信息的方法,如图1为本发明提出 的方法流程图,包括:
步骤101:当预先设置的针对信息记录的第一计时器到期时,将内存信息保 存入文件,并将所述第一计时器置为0,重新开始计时;
步骤102:当预先设置的针对绘图的第二计时器到期时,采用所述文件中的 内存信息存信息曲线图,并将所述第二计时器置为0,重新开始计时。
上述步骤101中的内存信息可以是预先获取并保存在数组中的,即,当第 一计时器到期时将内存信息保存入文件之前进一步包括:按照预先设定的周期 监测应用程序,获取所述应用程序的内存信息,将获取的内存信息以末尾增加 的方式保存在数组中;
当预先设置的第一计时器到期时,将所述数组中的内存信息保存入文件, 并将所述数组中的内容删除。
上述步骤101中,将内存信息保存入文件的方式可以为:当第一计时器第 一次到期时,创建新的文件,将内存信息保存入所述文件;当第一计时器再次 到期时,在所述文件原有内容的基础上继续写入内存信息。这里的文件可以是.xls 格式或者.txt等格式。
本发明每次从数组中获取的内存信息都保存在同一个文件中,相比现有技 术中将每次获取的内存信息分别保存在不同文件中的方式,本发明的存储方式 更便于后续绘制内存信息曲线图。
上述步骤102中,采用文件中的内存信息绘制内存信息曲线图的方式可以 为:当第二计时器第一次到期时,采用文件中的内存信息绘制内存信息曲线图, 保存所述内存信息曲线图;当第二计时器再次到期时,采用文件中的内存信息 绘制内存信息曲线图,保存所述内存信息曲线图,并删除前一次保存的内存信 息曲线图。这里的曲线图可以是.png格式或者.jpg等格式。
上述方法中,应用程序的内存信息可以为Android程序的Heapsize信息;
相应地,获取应用程序的内存信息的方式可以为:使用DDMS或者命令行 获取Android程序的Heapsize信息。
本发明采用间隔式绘图,即从保存内存信息开始后每隔一段时间进行一次 绘图。由于内存信息的监控需要一段时间,实时监控在开始阶段由于数据量不 足不能很好地体现内存的整体变化;相比现有技术中获取到内存信息后立即绘 图的方式,本发明采用的绘图方式能够弥补初期数据量不充分的问题。
以下举具体的实施例详细介绍。
实施例一:
在本实施例中,以监测Android程序的Heapsize信息为例进行介绍。包括 以下几个部分:
第一部分,如图2为本发明实施例一中获取内存信息的实现流程图。包括:
步骤201:将移动设备与PC连接,输入待监测应用程序的包名,点击“开始 监控”按钮。如图3为监测工具界面示意图。
步骤202:每间隔30秒时间获取一次内存信息(间隔时间可以根据需要灵 活调整),采用DDMS或者命令行获取Android程序的内存信息,将内存信息中 的Heapsize信息分离后以末尾增加的方式保存在数组A中。同时,将针对信息 记录的计时器T1及针对绘图的第二计时器T2置为0,开始计时。
第二部分,如图4为本发明实施例一中记录内存信息的实现流程图。包括:
步骤401:判断T1是否达到2分钟(本实施例以2分钟为例,具体数值可 以根据需要调整),如果达到,则执行步骤402。
步骤402:自动将数组A中保存的Heapsize信息写入excel表格中,删除数 组A中的数据,并将T1置为0,重新执行步骤401。
每次T1到期时,将Heapsize信息写入同一个excel表格中。
第三部分,如图5为本发明实施例一中绘制曲线图的实现流程图。包括:
步骤501:判断T2是否达到5分钟(本实施例以5分钟为例,具体数值可 以根据需要调整),如果达到,则执行步骤502。
步骤502:自动将excel表格中的数据进行Heapsize曲线图的绘制,并保存 为.png格式,删除前一次保存的.png格式图片;同时,将T2置为0,重新执行 步骤501。
在本实施例中,T1和T2可以根据实际需要进行设置,如T1=3m,T2=10m。 此外,保存格式也可以根据实际需要进行选择,如将数据保存为.txt格式,图片 保存为.jpg格式。通过绘制的Heapsize曲线图,可以分析该Android程序是否有 内存溢出的危险,一般情况下,若Heapsize曲线随着时间整体上是上升趋势, 则说明该Android程序有内存溢出(00M)的风险。
采用本实施例提出的方式,可以自动记录Android程序的Heapsize信息, 并自动采用该Heapsize信息绘制曲线图,由于整个过程是自动执行的,节约了 时间和人力的消耗,并排除了人为误操作的风险;同时,由于生成统一格式的 表格和曲线图,利于多个迭代数据和图标格式的统一性,利于应用程序进行纵 向对比。
本发明还提出一种自动监测应用程序内存信息的装置,如图6为该装置结 构示意图,包括:
保存模块601,用于当预先设置的针对信息记录的第一计时器到期时,将内 存信息保存入文件,并将所述第一计时器置为0,重新开始计时;
绘图模块602,用于当预先设置的针对绘图的第二计时器到期时,采用所述 文件中的内存信息绘制内存信息曲线图,并将所述第二计时器置为0,重新开始 计时。
上述装置还包括:
信息获取模块603,用于按照预先设定的周期监测应用程序,获取所述应用 程序的内存信息,将获取的内存信息以末尾增加的方式保存在数组中;
所述保存模块601在预先设置的第一计时器到期时,将所述数组中的内存 信息保存入文件,并将所述数组中的内容删除。
所述保存模块601将内存信息保存入文件的方式为:
当所述第一计时器第一次到期时,保存模块创建新的文件,将内存信息保 存入所述文件;
当所述第一计时器再次到期时,保存模块在所述文件原有内容的基础上继 续写入内存信息。
所述绘图模块602采用文件中的内存信息绘制内存信息曲线图的方式为:
当所述第二计时器第一次到期时,绘图模块采用文件中的内存信息绘制内 存信息曲线图,保存所述内存信息曲线图;
当所述第二计时器再次到期时,绘图模块采用文件中的内存信息绘制内存 信息曲线图,保存所述内存信息曲线图,并删除前一次保存的内存信息曲线图
上述装置中,应用程序的内存信息可以为Android程序的Heapsize信息;
信息获取模块603使用DDMS或者命令行获取Android程序的Heapsize信 息;
所述文件的格式可以为:.xls格式或.txt格式;
所述内存信息曲线图的格式可以为:.png格式或.jpg格式。
综上可见,本发明提出的自动监测应用程序内存信息的方法和装置,通 过设置定时器,自动记录应用程序的内存信息并绘图,从而实现节约人力和 时间成本,消除误操作的风险。并且,本发明将每次提取的内存信息统一保 存在一个文件中,方便后续绘图;采用间隔式获取的方式,能够弥补初期数 据量不充分的问题。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本 发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在 本发明保护的范围之内。
机译: 用于对Android应用程序的行为信息进行动态分析的仿真器,包括该应用程序的动态行为信息分析系统以及一种可计算的可记录介质,其中包括一个可提供实时信息的,针对Android应用程序的动态行为信息分析程序
机译: 一种用于自动监测食物和饮料摄入量,确定相关营养信息并与预定营养成分进行比较的系统和方法
机译: 患者实时(PRT)是一种患者信息移动软件应用程序,当结果以电子移动形式提交时,医务人员将有可能使用它们实时访问患者信息和检查结果(成像或病理学)。该软件应用程序将在所有形式的智能手机和平板电脑上可用-已针对Apple的IOS手机和平板电脑,基于Google Android的手机和平板电脑以及基于Windows 7/8的手机和平板电脑进行了修改。该软件将不仅限于移动应用程序,而是可用于所有个人计算机。