一种获取实例占用内存的方法及装置的制造方法

文档序号:8361434阅读:149来源:国知局
一种获取实例占用内存的方法及装置的制造方法
【技术领域】
[0001]本发明涉及信息技术领域,尤其涉及一种获取实例占用内存的方法及装置。
【背景技术】
[0002]安卓(Android)的内存占用分析通常是通过Memory Analyzer完成,采用MemoryAnalyzer仅能分析实例所属于的实现类。例如,窗口 A、窗口 B为不同界面类Class cl和Class c2的实例,其中,Class cl和Class c2都继承于window类。测试方希望查看界面的内存占用情况,采用Memory Analyzer通过Class cl或者Class c2 一个一个进行查找其包括的实例占用的内存。
[0003]然而,采用现有技术查看实例占用的内存时,无法一次性将实现类包括的窗口都找出来,导致浪费人力以及时间。

【发明内容】

[0004]本发明的实施例提供一种获取实例占用内存的方法及装置,可以通过继承关系一次性查找出符合条件的所有实例占用的内存。
[0005]第一方面,本发明实施例提供一种获取实例占用内存的方法,包括:
[0006]获取实例的实现类信息,所述实现类信息中包括实现类名称;
[0007]当所述实现类信息中包括的所述实现类名称与用户输入的过滤条件不匹配时,获取所述实现类的父类信息,所述父类信息中包括父类名称;
[0008]当所述实现类的父类信息中的所述父类名称与所述过滤条件匹配时,将所述实例以及所述实例对应的占用内存信息保存到展示列表以便展示。
[0009]第二方面,本发明实施例提供一种获取实例占用内存的装置,包括:
[0010]获取单元,用于获取实例的实现类信息,所述实现类信息中包括实现类名称;
[0011]所述获取单元,还用于当所述实现类信息中包括的所述实现类名称与用户输入的过滤条件不匹配时,获取所述实现类的父类信息,所述父类信息中包括父类名称;
[0012]保存单元,用于当所述实现类的父类信息中的所述父类名称与所述过滤条件匹配时,将所述实例以及所述实例对应的占用内存信息保存到展示列表以便展示。
[0013]本发明实施例提供一种获取实例占用内存的方法及装置,通过获取实例的实现类信息,所述实现类信息中包括实现类名称;当所述实现类信息中包括的所述实现类名称与用户输入的过滤条件不匹配时,获取所述实现类的父类信息,所述父类信息中包括父类名称;当所述实现类的父类信息中的所述父类名称与所述过滤条件匹配时,将所述实例以及所述实例对应的占用内存信息保存到展示列表以便展示,与采用现有技术查看实例占用内存时无法一次性将实现类包括的窗口都找出来,导致浪费人力以及时间相比,本发明实施例可以通过继承关系一次性查找出符合条件的所有实例占用的内存。
【附图说明】
[0014]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0015]图1为本发明一个实施例提供的一种获取实例占用内存的方法的流程图;
[0016]图2为本发明另一个实施例提供的一种获取实例占用内存的方法的流程图;
[0017]图3A为本发明另一个实施例提供的采用现有技术获取实例占用内存的结果示意图;
[0018]图3B为本发明另一个实施例提供的采用本发明获取实例占用内存的结果示意图;
[0019]图4为本发明一个实施例提供的一种获取实例占用内存的装置的框图;
[0020]图5为本发明一个实施例提供的一种获取实例占用内存的装置的框图。
【具体实施方式】
[0021]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0022]本发明实施例提供一种获取实例占用内存的方法,该方法的执行主体可以为终端,例如智能手机、平板电脑、笔记本电脑等终端。如图1所示,该方法包括:
[0023]步骤101,获取实例的实现类信息,所述实现类信息中包括实现类名称。
[0024]实例指基于某个类的对象实现,某个类的对象实现过程可以称为实例化。例如,Class A (参数1、参数2),实例指参数1、参数2,这两个实例的实现类为Class A。
[0025]可选的,获取的实例的实现类信息中还包括实现类的接口,所述实现类的接口用于调用实现类的方法实现实例。
[0026]步骤102,当所述实现类信息中包括的所述实现类名称与用户输入的过滤条件不匹配时,获取所述实现类的父类信息,所述父类信息中包括父类名称。
[0027]可选的,当所述实现类信息中包括的所述实现类名称与用户输入的过滤条件匹配时,则可以直接将实例以及实例对应的占用内存信息保存在展示列表中,展示列表中保存的各个记录为符合用户输入的过滤条件的实例以及实例对应的占用内存信息。
[0028]其中,实例对应的占用内存信息通常米用Shallow Heap和Retained Heap进行描述,其中,Shallow Heap表示实例自身占用的内存,其中不包括其引用的对象,RetainedHeap表示当前实例自身占用的内存以及当前实例可直接或者间接引用到的实例所占内存的总和。
[0029]可选的,当实现类存在父类时,则此实现类可以称为父类的子类,子类继承父类,子类的构造方法调用父类的构造方法。父类可以包括多个子类,即此多个子类可以调用父类的构造方法。
[0030]步骤103,当所述实现类的父类信息中的所述父类名称与所述过滤条件匹配时,将所述实例以及所述实例对应的占用内存信息保存到展示列表以便展示。
[0031]本发明实施例提供一种获取实例占用内存的方法,通过获取实例的实现类信息,所述实现类信息中包括实现类名称;当所述实现类信息中包括的所述实现类名称与用户输入的过滤条件不匹配时,获取所述实现类的父类信息,所述父类信息中包括父类名称;当所述实现类的父类信息中的所述父类名称与所述过滤条件匹配时,将所述实例以及所述实例对应的占用内存信息保存到展示列表以便展示,与采用现有技术查看实例占用内存时无法一次性将实现类包括的窗口都找出来,导致浪费人力以及时间相比,本发明实施例可以通过继承关系一次性查找出符合条件的所有实例占用的内存,节省人力以及时间。
[0032]本发明实施例提供另一种获取实例占用内存的方法,如图2所示,该方法包括:
[0033]步骤201,获取内存快照中所有实例构成的实例列表。
[0034]可选的,通过mat.api获取安卓(Android)内存快照中的实例列表,其中,实例列表中包括安卓内存中包括的所有实例。其中,api为应用程序编程接口(Applicat1nProgramming Interface)。例如,接收到用户发送的指令后,通过mat.api获取安卓内存快照中的实例列表。
[0035]步骤202,遍历所述实例列表,获取第一个实例。
[0036]可选的,进行后续处理时,依次处理各个实例,即查看一个实例所占内存完成之后,再按照实例列表的顺序查看下一个实例所占内存,直到实例列表中所有实例查看完成。
[0037]步骤203,获取实例的实现类信息,所述实现类信息中包括实现类名称。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1