Android内存泄漏分析

78 阅读1分钟

####1. 什么是内存泄漏

  • 内存泄漏跟OOM是不对等的 //Dalvik虚拟机( Dalvik Virtual Machine ),简称Dalvik VM或者DVM。

  • OOM(OutOfMemory 内存溢出):内存溢出(out of memory)通俗理解就是内存不够,通常在运行大型软件或游戏时,软件或游戏所需要的内存远远超出了你主机内安装的内存所承受大小,就叫内存溢出。此时软件或游戏就运行不了,系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软件;

  • 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 内存泄漏使GC无法回收的垃圾累积过多,量变引起质变,导致内存溢出。

  • 程序在DVM的堆内存中开辟一块内存(假设使一个引用a引用这块内存),自己却没用去使用这个引用a,而这时候存在着另外一个没被程序控制的“失控引用”b引用着这块内存,此时内存被引用着,便无法被GC回收,这内存既不能被回收又不能被有用的程序进程使用,便是实际的垃圾了,也就是内存泄漏;

  •  Java 的内存管理和引用类型