问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Android用MAT检测内存泄漏问题。。

发布网友 发布时间:2022-04-20 21:30

我来回答

1个回答

热心网友 时间:2023-06-23 01:40

Eclipse 有个插件工具MAT(Memory Analyzer Tool)可以帮助定位内存泄漏的对象。
安装MAT Update site: http://archive.eclipse.org/mat/1.1/update-site/
用DDMS工具Dump出问题App的.hprof文件 比如com.world.test2.hprof Dump之前最好先运行一下GC "Cause GC" , 确保mp出来的是还不能回收的对象等。
用SDK tools下工具hprof-conv.exe 做转换 hprof-conv com.world.test2.hprof appleak.hprof
用Eclipse “Open Head Dump”打开新转换的.hprof 文件--appleak.hprof 查看图形化界面,一个一个检查怀疑的点。
总结: MAT tool不会直接告诉你哪里内存泄漏,但是会列出怀疑的对象,需要你仔细检查这些对象为什么没有被释放掉。
下面是测试code, 在Android 4.2.2上测试过。 1. 此种情况可以引起Activity无法回收的情况,因为直接用类似private static Activity a0引用创建的Activity,导致Activity无法回收。 2. 此种情况没有引起Activity 无法回收的情况。 按理说这种情况应该也会导致静态Drawable 锁定Activity, 引用关系mBackground1-->Button-->Activity. 待分析
public class MainActivity extends Activity implements Button.OnClickListener{

final private static String TAG = "MainActivity";

private static Drawable mBackground1;

private static Drawable mBackground2;

private static Drawable mBackground3;

private static Drawable mBackground4;

private static Activity a0 ;

private static Activity a1 ;

private static Activity a2 ;

private static Activity a3 ;

private static Activity a4 ;

/*

* Shutdown intent

*/

private final String INTENT_ACTION_REQUEST_SHUTDOWN =

"android.intent.action.ACTION_REQUEST_SHUTDOWN";

@Override

public void onCreate(Bundle savedInstanceState) {

Log.v(TAG, "onCreate Activity="+this);

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//1

if(false){

if(a0 == null){

a0 = this;

Log.v(TAG, "onCreate Activity a0="+a0);

}

else if(a1 == null){

a1 = this;

Log.v(TAG, "onCreate Activity a1="+a1);

}

else if(a2 == null){

a2 = this;

Log.v(TAG, "onCreate Activity a2="+a2);

}

else if(a3 == null){

a3 = this;

Log.v(TAG, "onCreate Activity a3="+a3);

}

else if(a4 == null){

a4 = this;

Log.v(TAG, "onCreate Activity a4="+a4);

}

}

//set up button listener

Button myButton = (Button)findViewById(R.id.button_poweroff);

myButton.setOnClickListener(this);

myButton = (Button)findViewById(R.id.button_reboot);

myButton.setOnClickListener(this);

//2

if (mBackground1 == null) {

Log.v(TAG, "onCreate mBackground1");

mBackground1 = getResources().getDrawable(R.drawable.adbroot_004);

myButton.setBackgroundDrawable(mBackground1);
}

else if(mBackground2 == null){

Log.v(TAG, "onCreate mBackground2");

mBackground2 = getResources().getDrawable(R.drawable.test002);

myButton.setBackgroundDrawable(mBackground2);

}

else if(mBackground3 == null){

Log.v(TAG, "onCreate mBackground3");

mBackground3 = getResources().getDrawable(R.drawable.test003);

myButton.setBackgroundDrawable(mBackground3);

}

else if(mBackground4 == null){

Log.v(TAG, "onCreate mBackground4");

mBackground4 = getResources().getDrawable(R.drawable.adbroot_003);

myButton.setBackgroundDrawable(mBackground4);

}

}追问我的问题是MAT这个软件里打开navigation history没有histogram让我选,而是显示:a nagivator is not available..........
如图!!!。刚上传的。。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何批量导出全部微信好友微信号?快速导出微信联系人 交强险什么价格 命运冠位指定必练五星英灵是什么 命运冠位指定必练五星英灵推荐 自制豆沙馅能保存多久 红豆沙馅怎么保存 我高三,从现在到高考分数从350提到500多,有可能吗?我是文科生 高三350分还有5个月能提多少分 文科复读350多分可以提高多少 钱钟书-谈艺录-读本目录 送茶叶都有什么讲究呢? 中国文化送礼茶叶有什么讲究茶叶送礼有什么讲究和注意事项 果农怎么摘取较高果树上的果子,爬树摘取还是用什... 软件测试的具体流程是什么? 内存泄露和内存溢出后... 现在有没有山核桃采摘机 山核桃是如何采摘的,安全吗? 如何在Android Studio中使用LeakCanary检测内存泄露 如何测试一个软件是否内存泄漏,怎么测试?具体点,... Android studio如何分析内存泄漏,是否有自带的分... android手机测试中如何查看内存泄露 如何测试软件的内存泄露呢,是有什么工具吗 怎么测试ios app的内存泄漏 y7000p有大灯吗 是不是男生唱歌音都要比女生低八度呢?如果低的话... 别人说我唱歌低8度,是什么意思?该如何解决? (高分)推荐男生简单容易唱的歌曲和练歌的方法 男生如何唱假音 男生唱歌低八度怎么办? 该吃吃,该喝喝,遇事别往心里搁; 下联: 男生唱歌低八度怎么改 该吃吃该喝喝遇事别往心里搁 下联 16岁男生唱低音和假声都ok 可如何将这两个连在一起... 核桃采收方法有哪些? Android 内存溢出和内存泄漏的区别 核桃树什么时候剪枝,怎么剪。训 描述软件内存泄露的原因及检查方式 怎样把核桃从树上打下来 .如何弄出一个内存泄漏的错误来? 山核桃采摘除了传统的用竹竿打,谁还有其他更好的... 如何在linux下检测内存泄漏 临安山核桃采摘简单吗?没有经验人可以采摘吗? gettotalprivatedirty是什么方法 核桃成熟后怎么采摘? ios 双击内存泄漏的代码 无代码跳出来怎么办 请问Objective-c 内存溢出问题经验汇总,那个好心... 何处有售摘果器和鱼叉? 采摘下来的文玩核桃该咋弄? 求振动山核桃采摘机的二维三维图纸(可加分/要我买... 核桃皮非厚硬,砸不开? 家里种了很多山核桃,还要打下来,捡起来,很费力... 摇核桃树的机器对核桃树好不好? 核桃的加工方式有哪些?