我试图分析我的应用程序的内存消耗。所以我有一个.hprof文件。现在疯狂的事情是,每个软件都会得到不同的结果。
我拿了一个Sample Class,在那里我比较了所有的值。几乎所有数字都是相同的,除了保留记忆。
E.g。这些工具中保留记忆的数字:
为什么这些工具之间有这么大的差异?你们中的任何人都有类似的经历吗?
如果我查看CommunicationManager类的Android Studio中的详细信息,我会得到以下视图,并看到Shadow $ _klass与Perflib具有相同的值(568)。见这里:
PerfLib控制台日志:
当我调用" getTotalRetainedSize()"时,perflib输出显示ClassObj返回的Number。
答案 0 :(得分:0)
我知道如何从Perflib到Android Studio的价值观。我仍然不知道Eclipse Analyzer的功能。
如何从Android Studio获取值:
代码:
for(int i = 0; i < listOfClassObj.size(); i++){
ClassObj clazz = listOfClassObj.get(i);
ArrayList<Instance> list = clazz.getHardReferences();
long retainedValue = 0;
if(list.size() > 0){
for(int x = 0; x < list.size(); x++){
Instance inst = list.get(x);
String instanceStr = inst.toString();
if(instanceStr.substring(0, instanceStr.indexOf("@")).contentEquals(clazz.getClassName())){
retainedValue += inst.getTotalRetainedSize();
}
}
}else{
retainedValue = clazz.getShallowSize();
}
}