内存管理 Memory Management for Android Apps
2012-03-28 13:52
316 查看
关键字:
memory leak
heap is full
Garbage Collection
OutOfMemoryError
利用Eclipse Memory Analyzer 进行 Heap Dump文件分析
关键字:Eclipse插件 内存泄漏 分析报告
1. eclipse安装mat插件
2. 配置环境参数
3. 获得Heap Dump文件
VM 参数:-XX:+HeapDumpOnOutOfMemoryError JVM 就会在发生内存泄露时抓拍下当时的内存状态
如果想手动在适当时候抓下Heap Dump文件,则在DDMS中使用“Dump HPROF file”按钮,选择保存位置保存。
4. 格式转换
The
tool that is located at
For example:
And then open mat.hprof in Memory Analyzer
5.打开Heap Dump文件并生成报告
window | open perspective | Memory Analysis
6.分析报告
Reports->Leak Suspects
引用:
首先我们简单回顾下 JAVA 的内存回收机制,内存空间中垃圾回收的工作由垃圾回收器 (Garbage Collector,GC) 完成的,它的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别,如果对象正在被引用,那么称其为存活对象,反之,如果对象不再被引用,则为垃圾对象,可以回收其占据的空间,用于再分配。
在垃圾回收机制中有一组元素被称为根元素集合,它们是一组被虚拟机直接引用的对象,比如,正在运行的线程对象,系统调用栈里面的对象以及被 system class loader 所加载的那些对象。堆空间中的每个对象都是由一个根元素为起点被层层调用的。因此,一个对象还被某一个存活的根元素所引用,就会被认为是存活对象,不能被回收,进行内存释放。因此,我们可以通过分析一个对象到根元素的引用路径来分析为什么该对象不能被顺利回收。如果说一个对象已经不被任何程序逻辑所需要但是还存在被根元素引用的情况,我们可以说这里存在内存泄露。
现在,让我们开始真正的寻找内存泄露之旅,点击“Details ”链接,可以看到如图 8 所示对可疑对象 1 的详细分析报告。
参考
http://www.vogella.de/articles/EclipseMemoryAnalyser/article.html http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html
memory leak
heap is full
Garbage Collection
OutOfMemoryError
利用Eclipse Memory Analyzer 进行 Heap Dump文件分析
关键字:Eclipse插件 内存泄漏 分析报告
1. eclipse安装mat插件
2. 配置环境参数
3. 获得Heap Dump文件
VM 参数:-XX:+HeapDumpOnOutOfMemoryError JVM 就会在发生内存泄露时抓拍下当时的内存状态
如果想手动在适当时候抓下Heap Dump文件,则在DDMS中使用“Dump HPROF file”按钮,选择保存位置保存。
4. 格式转换
The
hproffile you get from Android has android specific format. You should convert
hproffile take from Android OS into standard
hprofformat. For this you can use
hprof-conv
AndrodiSDK/tools/hprof-conv.
tool that is located at
For example:
hprof-conv android.hprof mat.hpof[/code]
And then open mat.hprof in Memory Analyzer
5.打开Heap Dump文件并生成报告
window | open perspective | Memory Analysis
6.分析报告
Reports->Leak Suspects
引用:
首先我们简单回顾下 JAVA 的内存回收机制,内存空间中垃圾回收的工作由垃圾回收器 (Garbage Collector,GC) 完成的,它的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别,如果对象正在被引用,那么称其为存活对象,反之,如果对象不再被引用,则为垃圾对象,可以回收其占据的空间,用于再分配。
在垃圾回收机制中有一组元素被称为根元素集合,它们是一组被虚拟机直接引用的对象,比如,正在运行的线程对象,系统调用栈里面的对象以及被 system class loader 所加载的那些对象。堆空间中的每个对象都是由一个根元素为起点被层层调用的。因此,一个对象还被某一个存活的根元素所引用,就会被认为是存活对象,不能被回收,进行内存释放。因此,我们可以通过分析一个对象到根元素的引用路径来分析为什么该对象不能被顺利回收。如果说一个对象已经不被任何程序逻辑所需要但是还存在被根元素引用的情况,我们可以说这里存在内存泄露。
现在,让我们开始真正的寻找内存泄露之旅,点击“Details ”链接,可以看到如图 8 所示对可疑对象 1 的详细分析报告。
参考
http://www.vogella.de/articles/EclipseMemoryAnalyser/article.html http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html
相关文章推荐
- Memory Management for Android Apps
- Memory Management for Android Apps 笔记之 GC
- 给Unity开发者的C#内存管理(第二部分) C# Memory Management for Unity Developers (part 2 of 3)
- Android内存管理机制之一:low memory killer
- IOS内存管理策略(Memory Management Policy)
- Optimizing Linux Memory Management for Low-latency / High-throughput Databases
- Developing for Android, II The Rules: Memory
- 54.Automatic Shared Memory Management (ASMM) has been enabled for your database instance. The initia
- Very simple rules for memory management in Cocoa
- ##Memory Management (内存管理)
- Memory management for graphic processors - TTM的由来
- Android 内存管理 &Memory Leak & OOM 分析
- dealloc vs ViewDidDissapear for memory management
- Android 内存管理 - Low Memory killer & OOM
- Android API Guide for Media Apps(四)—— 构建媒体浏览器服务(Building a Media Browser Service)
- HUNTING YOUR LEAKS: MEMORY MANAGEMENT IN ANDROID (PART 2 OF 2)
- android APP开发的内存管理与优化之一 ——LowMemory Killer
- Android Memory Management, OutOfMemoryError
- Android内存管理机制之一:lowmemory killer
- Android API Guide for Media Apps(一)——概览(Overview)