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

文档序号:8361434阅读:来源:国知局
[0038]本步骤与附图1中步骤101相同,在此不再--赘述。
[0039]步骤204,判断所述实现类信息中包括的所述实现类名称是否与用户输入的过滤条件匹配。
[0040]可选的,当所述实现类信息中包括的所述实现类名称与用户输入的过滤条件匹配时,则执行步骤205,当所述实现类信息中包括的所述实现类名称与用户输入的过滤条件不匹配时,则执行总部后206。
[0041]步骤205,将所述实例以及所述实例对应的占用内存信息保存到展示列表以便展
/Jn ο
[0042]展示列表中包括所有与用户输入的过滤条件匹配的实例以及实例对应的占用内存信息。其中,实例对应的占用内存信息可以由Shallow Heap和Retained Heap进行描述。
[0043]可选的,执行完步骤205之后,继续执行步骤211,即获取下一个实例。
[0044]步骤206,将所述实现类赋值给递归变量。
[0045]例如,实现类采用IClass表示,递归变量采用IClassNext表示,则将实现类赋值给递归变量可以表不为IClassNext=IClass。
[0046]步骤207,判断所述递归变量是否有父类。
[0047]当递归变量存在父类时,执行步骤208,当递归变量不存在父类时,执行步骤211。
[0048]步骤208,根据所述实现类信息获得所述实现类的父类信息,所述父类信息中包括父类名称。
[0049]可选的,当实现类存在父类时,则此实现类可以称为父类的子类,子类继承父类,子类的构造方法调用父类的构造方法。父类可以包括多个子类,即此多个子类可以调用父类的构造方法。
[0050]步骤209,判断所述实现类的父类信息中的所述父类名称与所述过滤条件是否匹配。
[0051]当所述实现类的父类信息中的所述父类名称与所述过滤条件匹配,则执行步骤205,当所述实现类的父类信息中的所述父类名称与所述过滤条件不匹配时,执行步骤210。
[0052]步骤210,将所述实现类的父类赋值给所述递归变量。
[0053]可选的,实现类的父类可以表示为Superclass,则将实现类的父类赋值给递归变量可以表不为 IClassNext=SuperClass。
[0054]当执行完步骤210之后,循环执行步骤207。
[0055]步骤211,判断所述实例是否为最后一个实例;
[0056]步骤212,当所述实例不是最后一个实例时,依次获取所述实例列表中所述实例之后的下一个实例。
[0057]可选的,当对当前实例处理完成后,继续执行下一个实例,即执行步骤203,根据所述获取实例占用内存的方法对所述下一个实例执行获取实例占用内存的操作。
[0058]步骤213,当所述实例列表中所有的实例都执行完获取实例占用内存的操作后,显示所述展示列表。
[0059]例如,当采用现有技术查看实例占用内存时,即采用Memory Analyzer分析内存列表时,输入的过滤条件为“tencent”,现有技术无法将大量的实例按照继承关系分类,而且展示列表展示的实例的数量巨大,如图3A表示。当采用本发明实施例提供的方法查看实例占用内存时,由于可以将大量的实例按照继承关系分类,并可以按照继承关系排除不符合过滤条件的实例,得到的展示列表数量少,如图3B所示的展示列表中展示2条实例。
[0060]本发明实施例提供一种获取实例占用内存的方法,通过获取实例的实现类信息,所述实现类信息中包括实现类名称;当所述实现类信息中包括的所述实现类名称与用户输入的过滤条件不匹配时,获取所述实现类的父类信息,所述父类信息中包括父类名称;当所述实现类的父类信息中的所述父类名称与所述过滤条件匹配时,将所述实例以及所述实例对应的占用内存信息保存到展示列表以展示,使得可以通过继承关系一次性查找出符合条件的所有实例占用的内存,节省人力以及时间。
[0061]本发明实施例提供一种获取实例占用内存的装置40,该装置可以为终端,例如智能手机、平板电脑、笔记本电脑等终端。如图4所示,该装置包括:获取单元401,保存单元402。
[0062]获取单元401,用于获取实例的实现类信息,所述实现类信息中包括实现类名称;
[0063]实例指基于某个类的对象实现,某个类的对象实现过程可以称为实例化。例如,Class A (参数1、参数2),实例指参数1、参数2,这两个实例的实现类为Class A。
[0064]所述获取单元401,还用于当所述实现类信息中包括的所述实现类名称与用户输入的过滤条件不匹配时,获取所述实现类的父类信息,所述父类信息中包括父类名称;
[0065]保存单元402,用于当所述实现类的父类信息中的所述父类名称与所述过滤条件匹配时,将所述实例以及所述实例对应的占用内存信息保存到展示列表以便展示。
[0066]其中,实例对应的占用内存信息通常米用Shallow Heap和Retained Heap进行描述,其中,Shallow Heap表示实例自身占用的内存,其中不包括其引用的对象,RetainedHeap表示当前实例自身占用的内存以及当前实例可直接或者间接引用到的实例所占内存的总和。
[0067]展示列表中包括所有与用户输入的过滤条件匹配的实例以及实例对应的占用内存信息。
[0068]进一步可选的,在所述获取单元401,根据实例获取所述实例的实现类信息之前,所述获取单元401还用于获取内存快照中所有实例构成的实例列表。
[0069]可选的,通过mat.api获取安卓(Android)内存快照中的实例列表,其中,实例列表中包括安卓内存中包括的所有实例。
[0070]进一步可选的,如图5所示,所述装置还包括:遍历单元403 ;
[0071]在获取实例列表之后,遍历单元403,用于遍历所述实例列表,获取第一个实例。
[0072]进一步可选的,如图5所示,所述获取单元401用于获取所述实现类的父类信息,所述获取单元401包括:赋值模块4011,判断模块4012,获取模块4013 ;
[0073]赋值模块4011,用于当所述实现类信息中包括的所述实现类名称与用户输入的过滤条件不匹配时,将所述实现类赋值给递归变量;
[0074]例如,实现类采用IClass表示,递归变量采用IClassNext表示,则将实现类赋值给递归变量可以表不为IClassNext=IClass。
[0075]判断模块4012,用于判断所述递归变量是否有父类;
[0076]获取模块4013,用于当所述递归变量有父类时,根据所述实现类信息获得所述实现类的父类信息。
[0077]进一步可选的,当所述实现类的父类信息中的所述父类名称与所述过滤条件不匹配时,所述赋值模块4011,还用于:将所述实现类的父类赋值给所述递归变量。
[0078]可选的,实现类的父类可以表示为Superclass,则将实现类的父类赋值给递归变量可以表不为 IClassNext=SuperClass。
[0079]可选的,在赋值给递归变量之前,可以判断实现类的父类信息中的所述父类名称与所述过滤条件是否匹配。
[0080]进一步可选的,在所述将所述实例以及所述实例对应的占用内存信息保存到展示列表以便展示之后,或者当所述递归变量没有父类时,所述获取单元401,还用于依次获取所述实例列表中所述实例之后的下一个实例,以便根据所述获取实例占用内存的方法对所述下一个实例执行获取实例占用内存的操作;
[0081]进一步可选的,如图5所示,所述装置还包括:
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1