内存泄露检测装置及方法、终端的制作方法_4

文档序号:9452997阅读:来源:国知局
势,如该微信应用进程的内存占用值在10点10分到10点20分的时间段内的子变化趋势是递增趋势,该微信应用进程的内存占用值在10点30分到10点40分的时间段内的子变化趋势是递增趋势,该微信应用进程的内存占用值在10点50分到11点整的时间段内的子变化趋势是非递增趋势,该微信应用进程的内存占用值在11点整到11点10分的时间段内的子变化趋势是非递增趋势,该微信应用进程的内存占用值在11点10分到11点20分的时间段内的子变化趋势是递增趋势,则认为微信应用进程的内存占用值的变化趋势为递增趋势。
[0095]参照图6,图6为本发明内存泄露检测装置的第二实施例的结构示意图。
[0096]基于上述内存泄露检测装置的第一实施例,该装置还包括:获取模块13,用于获取测试脚本,该测试脚本为shell脚本;
[0097]该采集模块10,还用于运行shell脚本采集被测进程的内存采样信息。
[0098]该获取模块13可直接从该被测进程所在的终端的存储器中读取,也可通过与该被测进程所在的终端进行有线连接或无线连接的其他终端获取测试脚本,在一实施例中,如该被测进程所在的终端为安卓手机,与该安卓手机连接的终端为平板电脑,该平板电脑上保存有用于进行内存泄露检测的测试脚本,该获取模块13从该平板电脑中获取测试脚本,并将该测试脚本保存在安卓手机中(如保存在安卓手机的SD卡中);在另一实施例中,该获取模块13从该被测进程所在的终端的SD卡中读取测试脚本。
[0099]该测试脚本为shell脚本,该测试脚本运行在该被测进程所在的终端的底层。由于该shell脚本运行在该被测进程所在的终端的底层,因此可通过该shell脚本准确的采集到被测程序的内存采样信息,具体的,采集模块10,用于运行shell脚本采集被测进程的内存采样信息。
[0100]参照图7,图7为本发明内存泄露检测装置的第三实施例的结构示意图。
[0101]基于上述内存泄露检测装置的第一实施例或第二实施例,该装置还包括:
[0102]定位模块14,用于在该被测进程存在内存泄露时,根据该被测进程的内存占用值的变化趋势定位该被测进程发生内存泄露的对象或代码段。
[0103]在该被测进程存在内存泄露时,有可能只是由于该被测进程的某一部分代码段或对象在运行时导致内存泄露,在该定位模块14根据被测进程的内存占用值的变化趋势定位该被测进程发生内存泄露的对象或代码段,如,从该被测进程的内存占用值的变化趋势中找到内存占用值处于递增的时间点,再查找到在该时间点时,用户进行了一些什么操作,进而查找到对应的对象或代码段,即查找到发生内存泄露的对象或代码段,如在图5所示的某个被测进程的内存占用值的变化趋势的示意图,在第169秒到第190秒采集的内存占用值明显增加,且增加后的内存占用值比之前采集的内存占用值都大,因此可认为在第169秒到第190秒运行被测进程时发生了内存泄露,查找在该第169秒到第190秒时,用户进行了一些什么操作,进而查找到对应的对象或代码段,对发生内存泄露的对象或代码段进行定位。
[0104]参照图8,图8为本发明内存泄露检测装置的第四实施例的结构示意图,该装置还包括:
[0105]发送模块21,用于将所述采集的被测进程的内存采样信息发送给监控终端,以使得所述监控终端生成所述被测进程的内存占用值的变化趋势,并根据所述被测进程的内存占用值的变化趋势,判断所述被测进程是否存在内存泄露。
[0106]该被测进程所在的终端与监控终端之间建立有线或无线连接,如在一实施例中,该被测进程所在的终端为安卓手机,该监控终端为平板电脑,该安卓手机与该平板电脑通过USB数据线连接,或该安卓手机与该平板电脑通过无线通讯技术连接。
[0107]该发送模块21可将采集的被测进程的多个内存采样信息以日志文件形式发送给监控终端,监控终端在接收到被测进程的多个内存采样信息后,进行分析,以确定该被测进程是否存在内存泄露,具体的,该监控终端首先生成该被测进程的内存占用值的变化趋势,然后根据该被测进程的内存占用值的变化趋势,判断该被测进程是否存在内存泄露。
[0108]本发明进一步提供一种内存泄露检测方法。
[0109]参照图9,图9为本发明内存泄露检测方法的第一实施例的流程示意图,该方法包括:
[0110]S10、米集被测进程的内存米样彳目息,所述内存米样彳目息包括米样时间、被测进程在所述采样时间对应的内存占用值。
[0111]被测进程所在的终端可为智能手机、平板电脑等,该被测进程所在的终端的操作系统可为安卓系统,在本发明中,以该被测进程所在的终端为安卓手机为例。
[0112]该被测进程可以有一个或多个,如该被测进程为微信应用进程、微博应用进程、浏览器应用进程等应用中的一个或多个。
[0113]该被测进程在正常运行时,用户通过该被测进程执行各种操作,如当该被测进程为微信应用进程时,用户通过该微信应用进程进行聊天(语音聊天、文字聊天、视频聊天)、发朋友圈、创建/删除联系人等。
[0114]在该步骤中,采集被测进程的内存采样信息,具体的,可按照预设时间间隔定时采集被测进程的多个内存采样信息,如每隔十秒采集一次被测进程的内存采样信息,则在十分钟内得到60个内存采样信息。
[0115]在一实施例中,该被测进程只有一个,如该被测进程为微信应用进程,在该步骤中,采集该微信应用进程的内存采样信息,如每隔十秒钟采集一次微信应用进程的内存采样信息,则在十分钟内得到60个内存采样信息。
[0116]在另一实施例中,该被测进程有多个,如该被测进程包括微信应用进程和微博应用进程,则在该步骤中,分别采集该微信应用进程和微博应用进程的多个内存采样数据,如每隔十秒钟采集一次微信应用进程和微博应用进程的内存采样信息,则在十分钟内分别得到微信应用进程的60个内存采样信息和微博应用进程的60个内存采样信息。
[0117]该内存采样信息包括采样时间、被测进程在该采样时间对应的内存占用值,即在该步骤中,记录采样时间和被测进程在该采样时间对应的内存占用值;该内存占用值为TOTAL的Prviate dirty值,如图4所示,表示一被测进程在某一时刻所消耗的内存情况,该内存占用值为15624(对应第2列第12行的数值)。
[0118]S11、生成该被测进程的内存占用值的变化趋势。
[0119]根据在步骤SlO中采集的被测进程的内存占用值生成该被测进程的内存占用值的变化趋势,如该被测进程为微信应用进程,采集的内存占用值有60个时,则在XY坐标轴中,X值上表示采样点编号(如1、2、3、4.......59,60)或采样时间,Y值表示采样点编号或采样时间对应的内存占用值。可选的,在XY坐标中通过柱状图表示被测进程的内存占用值的变化趋势,如图5所示,X轴表示采样时间(X轴上的I表示第I秒,8表示第8秒,15表示第15秒,依次类推,204表示第204秒),Y轴表示内存占用值(单位为KB)。可选的,在XY坐标中通过折线图表示被测进程的内存占用值的变化趋势。
[0120]在被测进程只有一个时,则生成一个被测进程的内存占用值的变化趋势,如该被测进程为微信应用进程,则只生成该微信应用进程的内存占用值的变化趋势;在该被测进程有多个时,则分别生成各个被测进程的内存占用值的变化趋势,如该被测进程为微信应用进程和微博应用进程,则分别生成该微信应用进程和微博应用进程的内存占用值的变化趋势。
[0121]该步骤Sll可在该被测进程所在的终端执行,也可在该被测进程所在的终端之外的另一个终端上执行,如该被测进程所在的终端为安卓手机,则该步骤Sll可在该安卓手机上执行,也可在平板电脑上执行。
[0122]S12、根据该被测进程的内存占用值的变化趋势,判断该被测进程是否存在内存泄
Mo
[0123]通常的,在被测进程发生内存泄露时,该被测进程的内存占用值会变大,即该被测进程在使用完某个分配的内存后,没有及时释放,在需要内存时,要重新分配新的内存,导致该被测进程的内存占用值变大;因此,在该步骤中,可以通过判断该被测进程的内存占用值的变化趋势,确定该被测进程是否存在泄露。
[0124]米用上述实施例,米集被测进程的内存米样?目息,该内存米样?目息包括米样时间、被测进程在该采样时间对应的内存占用值;生成该被测进程的内存占用值的变化趋势;根据该被测进程的内存占用值的变化趋势,判断该被测进程是否存在内存泄露;可被测进程根据该采集的内存采样信息判断被测进程是否发生内存泄露,可提高内存泄露检测的准确性。
[0125]进一步的,根据该被测进程的内存占用值的变化趋势,判断该被测进程是否存在内存泄露的步骤包括:
[0126]若该被测进程的内存占用值的变化趋势为递增趋势,则判断该被测进程存在内存泄露,否则,判断该被测进程不存在内存泄露。
[0127]在该步骤中,判断该被测进程的内存占用值的变化趋势是否为递增趋势,具体的,当该被测进程的内存占用值一直处于增加,则认为该被测进程的内存占用值的变化趋势为递增趋势,当该被测进程的内存占用值一会增大、一会减小,但是增大的幅度远远大于减小的幅度,则认为被测进程的内存占用值的变化趋势为递增趋势。
[0128]当在多个预设时间采集了该被测进程的多个内存采样信息时,则分别分析每一个预设时间采集的该被测进程的多个内存采样信息的内存占用值对应的子变化趋势,再根据该被测进程的内存占用值在各个预设时间内的子变化趋势确定该被测进程的内存占用值的变化趋势,当该子变化趋势为递增趋势的次数大于子变化趋势为非递增趋势(递减趋势或
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1