移动学习 AndroidStudio内存优化分析—hprof文件分析
来源:互联网 发布:阿里云域名证书 编辑:程序博客网 时间:2024/06/05 14:22
1、移动学习在主界面时按如下顺序点击:
2、其实和 android内存分析 outOfMemoryError错误定位及分析策略(非显示图片造成) 中用eclipse前7步的设置一样,只不过这个速度更快一些,更方便一些(eclipse ddms模式下卡的要死要死~~~~)
3、用mat for mac(下载地址:http://www.eclipse.org/mat/downloads.php) 打开hprof文件:
4、按Shallow Heap降序排列后,如上图所示
Shallow Heap代表:对象本身占用内存的大小,不包含其引用的对象。
Retain Heap代表:如果这个对象被释放掉,那会因为该对象的释放而减少引用进而被释放的所有的对象大小。
直观的说就是MainNewActivity占了312字节的内存,如果被释放掉的话它所持有的对象也会被释放掉共大于等于2888字节内存。
5、在MainNewActivity右键->List Objects会出现两个选项:with outgoing references 和 with incoming references
with outgoing references是指 被该对象引用的对象 (这个对象持有了哪个对象)
with incoming references是指 引用到该对象的对象(哪个对象持有了该对象)
点击with outgoing references后如图:
6、显示出MainNewActivity所持有的所有成员变量,activityInfo的所有信息等等,点击其中的termEnd右键with incoming references,列出所有持有该对象的对象:
7、即可看到LoadActivity、SettingsActivity、LoginActivity都持有该变量(该变量写在了BaseActivity里),大问题啊,改!
8、GC Roots:调用该对象的根节点,例子如图:
9、如果在object4上右键 path to GCRoot -> exclude all phantom/weak/soft etc. references(去除所有的虚引用,弱引用,软引用) 就会得到调用该类的跟节点gc root,例如:
10、可以看出是在DBManagerHelper中实例化sqliteOpenHelper时初次调用了sqliteOpenHelper。此方法在查询对象在哪里最初被调用或持有非常好使。
11、移动学习进入主程序后,LoadActivity理应被释放,但是还常驻内存,查了一下incoming references,发现是common.commonContext对象持有了该对象,造成了内存泄漏,修改LoadActivity和BaseActivity中的代码
- 移动学习 AndroidStudio内存优化分析—hprof文件分析
- 移动学习 AndroidStudio内存优化分析—alloc文件分析
- MAT hprof 内存分析
- JVM内存分析工具——HProf
- Android 内存泄露分析--MAT分析hprof文件
- Mac中分析hprof文件查找内存泄露
- mat工具MemoryAnalyzer进行分析java内存溢出hprof文件
- 基于hprof的Android 内存使用分析
- AndroidStudio MAT内存分析
- AndroidStudio MAT内存分析
- AndroidStudio MAT内存分析
- 11使用mat进行分析hprof文件
- AndroidStudio里查看hprof文件
- HPROF:Java程序的内存及CPU使用分析工具
- Sun JDK自带JVM内存使用分析工具HProf
- Sun JDK自带JVM内存使用分析工具HProf
- AndroidStudio + MAT 内存泄漏分析
- 使用MAT的命令行工具分析hprof文件
- window.onload事件的作用是什么
- AFNetworking2.0 NSHipster翻译
- React Native 之ScrollView轮播图实现
- xcode5 arm64
- (译)Objective-C的动态特性
- 移动学习 AndroidStudio内存优化分析—hprof文件分析
- Objective C运行时(runtime)技术的几个要点总结
- Associated Objects
- poj1654-area 计算多边形的面积
- centos7安装docker
- javascript模拟实现多次使用window.onload事件处理函数
- Method Swizzling
- MSVC/MinGW中导入glog静态库的正确方式
- ios7 JavaScriptCore.framework