内存泄漏分析之-内存分析工具的使用
来源:互联网 发布:绝地求生多线程优化 编辑:程序博客网 时间:2024/06/05 18:17
知道了内存泄漏的种种原因后,我们想知道程序是否发生了内存泄露,并定位到内存泄露的具体位置应该怎么做呢?
1.查看GC日志判断是否发生内存泄露
程序每进行一次GC操作,Logcat中就会输出一次GC日志。日志格式如下: <GC_name>: <GC_Reason> <Amount_freed>, <Heap_stats>, <Pause_time>
- GC_name :运行环境,android4.4之前程序运行在dalvik虚拟机上,GC_name就为
D/dalvik
;android4.4之后加入了art运行环境,GC_name就我I/art
. - GC_Reason : 出发GC操作的原因。
- Amount_freed :系统通过这次GC释放的内存
- Heap_stats : 当前内存的空闲比例以及使用情况(活动对象所占内存 / 当前程序总内存)
- Pause_time : GC操作导致应用程序暂停的时间。
鉴于运行环境的不同,android4.4之前使用dalvik运行环境时一次GC日志如下:
android4.4后art运行环境发生一次GC时日志如下:
通过查看GC日志,可以简单的了解当前GC的情况,如果反复进入某个界面很快就出现GC_Reason = GC_CONCURRENT ,那么就要小心了,这个页面可能出现了内存泄漏。
2. 内存分析工具-MAT
通过GC日志大概可以判断程序是否发生了内存泄露,要想找出内存泄露的具体原因及准确位置,就需要用到内存分析工具了。
MAT工具能够对AndroidStudio中Monitors下的memory工具产生的hprof文件进行分析整理,通过追踪,最终可以找到具体的内存泄露的地方,至于怎么用,这里就不多说了。
3. 内存分析工具-LeakCanary
LeakCanary相比MAT不同的地方在于LeakCanary可以将内存泄露的情况输出到手机屏幕上,更加直观。
好了,本节简单的介绍了内存泄露的分析工具,需要注意的是,虽然分析工具五花八门,但机制都大同小异,这些分析工具也没法保证一定可以将程序中的泄露原因都找出来,关键还是需要自己在写代码的时候多加注意,避免可能出现内存泄露的代码出现。
阅读全文
0 0
- 内存泄漏分析之-内存分析工具的使用
- 使用工具分析内存泄漏
- eclipse 中使用内存分析工具MAT分析内存泄漏
- 内存泄漏之分析工具MAT
- Android 内存泄漏工具使用分析
- MAT内存泄漏分析工具
- 内存泄漏检测分析工具
- Tomcat内存优化4.1 内存泄漏——内存分析工具 MAT 的使用
- android内存优化之三内存分析工具的使用
- 内存泄漏 之 MAT工具的使用
- Android Context导致的内存泄漏分析(示例代码+分析工具使用)
- 内存泄漏分析 mat 使用 activity泄漏
- android 内存泄漏的分析
- 有关内存泄漏的分析
- Android的内存泄漏分析
- Android 内存泄漏分析工具LeakCanary
- 100%正确的内存泄漏分析工具 ------ tMemMonitor (TMM)
- 内存泄露分析之MAT工具使用
- Android ADB 一些常用命令
- 文章标题
- 遇见kafka
- MongoDB_索引
- Java 内存区域和GC机制
- 内存泄漏分析之-内存分析工具的使用
- Andrew Ng机器学习笔记week4、5 神经网络
- HTML5(动画)
- 2018中兴回寄三方
- Appium Desktop-启动异常Permission to start activity denied.
- 从一个html页面传值到另一个页面,两个html之间的值传递(js location.search用法)
- Redis学习指南
- CSS background-repeat属性
- 配置文件无法识别targetFramework属性