Android——内存泄漏

2018-01-24  本文已影响0人  遥遥的远方

性能优化----内存泄漏优化

一:什么是内存泄漏:内存不再GC的掌控之内了

总结:Java的GC内存回收机制,某对象不再有任何的引用的时候才会进行回收。

GC的原理:可以作为GC Root引用的对象

image

(2)怎么判断一个对象是垃圾对象?
这是一个主观的判断。

内存泄漏对了容易导致OOM-----内存溢出,app会崩溃。

二:确定我们项目当中或者某几个类里面是否存在内存泄漏。

粗略判断内存泄漏-----Android Monitors--->System Informatoon ---->MemoryIsage查看Obejcts里面是否有 没有被释放的Views或者Activity。
命令行模式:adb shell dumpays meminfo 包名 -d

三:确定内存泄漏的大致范围:

1.Android studio方式:看Memory Monitors工具。

检查activity一个一个的动作(比如Activity的跳转)

反复多次执行摸一个操作,不断的通过这个工具查看内存的大概变化的情况,前后观察两个内存变化情况。

四:更仔细的查找内存泄漏的位置。

在AS里面使用Head Snapshot工具(堆栈快照)

五:使用更高级的分析工具具体找到内存泄漏的根源(工具 MAT)

注: 通过传入ApplicationContext使editview和activity解除绑定,再通过发射使editviews所持有的父view为null,这样就解决了activity的内存泄露,但这种方法有一个问题,字体颜色会变成白色,所以要自己添加颜色,在华为手机测试内存不泄露,只是editview本身释放不掉,但activity没有泄露,这种方法可以接受。

上一篇 下一篇

猜你喜欢

热点阅读