内存泄漏分析之-内存分析工具的使用
2017-11-30 16:20
190 查看
知道了内存泄漏的种种原因后,我们想知道程序是否发生了内存泄露,并定位到内存泄露的具体位置应该怎么做呢?
GC_name :运行环境,android4.4之前程序运行在dalvik虚拟机上,GC_name就为
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 ,那么就要小心了,这个页面可能出现了内存泄漏。
MAT工具能够对AndroidStudio中Monitors下的memory工具产生的hprof文件进行分析整理,通过追踪,最终可以找到具体的内存泄露的地方,至于怎么用,这里就不多说了。
好了,本节简单的介绍了内存泄露的分析工具,需要注意的是,虽然分析工具五花八门,但机制都大同小异,这些分析工具也没法保证一定可以将程序中的泄露原因都找出来,关键还是需要自己在写代码的时候多加注意,避免可能出现内存泄露的代码出现。
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可以将内存泄露的情况输出到手机屏幕上,更加直观。好了,本节简单的介绍了内存泄露的分析工具,需要注意的是,虽然分析工具五花八门,但机制都大同小异,这些分析工具也没法保证一定可以将程序中的泄露原因都找出来,关键还是需要自己在写代码的时候多加注意,避免可能出现内存泄露的代码出现。
相关文章推荐
- Instruments的使用 逻辑查错,内存泄漏分析等工具集
- Instruments的使用 逻辑查错,内存泄漏分析等工具集
- eclipse安装、使用MAT(MemroyAnalyzerTool)内存泄漏分析工具
- 深度分析内存泄漏原因,使用MAT工具检测内存泄露和性能
- 内存泄漏分析工具tMemMonitor (TMM)使用简介
- C/C++检测内存泄漏的工具 vld Visual Leak Detector223 的使用方法和sample示例
- android 内存分析(MAT工具的使用)
- 内存泄漏检查工具valgrind使用方法
- C/C++检测内存泄漏的工具 vld Visual Leak Detector223 的使用方法和sample示例
- [软件甜点] Win7下内存使用分析工具Rammap图文介绍
- C/C++检测内存泄漏的工具 vld Visual Leak Detector223 的使用方法和sample示例
- C/C++检测内存泄漏的工具 vld Visual Leak Detector223 的使用方法和sample示例
- (转)C/C++检测内存泄漏的工具 vld Visual Leak Detector223 的使用方法和sample示例
- android 内存分析(MAT工具的使用)
- JavaME 程序性能调优内存分析工具 Memory Monitor 的使用
- .NET程序内存分析工具CLRProfiler的使用
- 使用Eclipse Memory Analyzer进行内存泄漏分析三部曲
- MAT(内存分析工具)的使用
- Sun JDK自带JVM内存使用分析工具HProf
- 使用 ksar 工具分析10个方面系统性能 ——磁盘 I/O、网络、CPU 、内存、NFS 、系统中断、内存分页