Android 开发中的内存泄漏

Android 开发中的内存泄漏

什么是内存泄漏

定义

程序中动态分配的内存因为某种原因未释放或无法释放

通俗的讲,就是一个长生命周期对象 A 持有了一个短生命周期 B 对象的引用,导致 B 销毁时无法被 GC 回收,造成的内存浪费。

危害

  • 用户对单次的内存泄漏并没有什么感知,但是当泄漏积累到内存都被消耗完,就会导致卡顿,甚至崩溃;
  • gc回收频繁 造成应用卡顿ANR:
  • 当内存不足的时候,gc会主动回收没用的内存.但是,内存回收也是需要时间的.- 内存回收和gc回收垃圾资源之间高频率交替的执行.就会产生内存抖动.
  • 很多数据就会污染内存堆,马上就会有许多GCs启动,由于这一额外的内存压力,也会产生突然增加的运算造成卡顿现象,
  • 任何线程的任何操作都会需要暂停,等待GC操作完成之后,其他操作才能够继续运行,所以垃圾回收运行的次数越少,对性能的影响就越少;
繼續閱讀

Java设计模式之单例模式

理论上Java设计模式有23种,在Android中,单例模式是很经常用到的一种设计模式。

什么是单例模式?

当需要控制一个类的实例只能有一个,而且客户只能从一个全局访问点访问它时,可以选用单例模式,这些功能恰好是单例模式要解决的问题。

繼續閱讀