美文网首页
内存泄漏OOM

内存泄漏OOM

作者: Gen哥哥 | 来源:发表于2019-04-16 00:12 被阅读0次

什么是内存泄漏?

有些对象只有有限的生命周期。当它们的任务完成之后,它们将被垃圾回收。如果在对象的生命周期本该结束的时候,这个对象还被一系列的引用,这就会导致内存泄漏。随着泄漏的累积,app将消耗完内存。

比如,在Activity.onDestroy()被调用之后,view树以及相关的bitmap都应该被垃圾回收。如果一个正在运行的后台线程继续持有这个Activity的引用,那么相关的内存将不会被回收,这最终将导致OutOfMemoryError崩溃。

寻找内存泄漏

寻找内存泄漏是一个人工操作的过程,在Raizlabs的Wrangling Dalvik系列中描述得很清楚。

下面是关键的步骤:

通过Bugsnag,Crashlytics, 或者Developer Console了解OOM

主动重现问题。你可能需要买或者借或者偷一个遭遇了崩溃的特殊设备(并不是所有的设备上都会发生内存泄漏!)。你还需要找出是什么串在一起导致了内存泄漏。

当OOM出现时进行堆转储(dump the heap)(这里介绍了如何做).

使用MAT或YourKit内存检测工具检测内存的变化,并找出哪个对象应该被垃圾回收;

从那个对象到GC roots推断最短的强引用路径;

在路径中找出不存在的引用,并修复memory leak;

要是有一个库可以为你做完所有的事情,让你专注于修复内存泄漏的问题,那该有多好。

LeakCanary是一个开源的在debug版本中检测内存泄漏的java库。

相关文章

  • Android OOM之内存泄漏详解

    OOM(OutOfMemory)就是我们平时所碰到的内存溢出,而内存泄漏的最终后果就是导致OOM。内存泄漏是造成应...

  • Android性能优化—布局优化技巧

    前面几篇文章在前面几篇文章当中, Android 内存泄漏和OOM分析(一) Android 内存泄漏和OOM分析...

  • Android 内存泄漏

    【Android 内存泄漏】 引用: ★★★ 【知识必备】内存泄漏全解析,从此拒绝ANR,让OOM远离你的身边,跟...

  • 面试题-第一期

    内存泄漏&&内存溢出 参考博客参考博客 先来看看内存泄漏,内存溢出,OOM,GC回收这几个概念。把App的堆内存空...

  • Android 内存优化

    Android内存泄露容易导致内存溢出,又称为OOM。 内存泄漏怎么产生的 资源对象没关闭造成的内存泄漏 构造Ad...

  • 内存泄漏OOM

    什么是内存泄漏? 有些对象只有有限的生命周期。当它们的任务完成之后,它们将被垃圾回收。如果在对象的生命周期本该结束...

  • 【JVM】内存溢出分析

    一 内存溢出概述 都有发生内存溢出异常(OutOfMemoryError,简称OOM)的可能。 内存溢出和内存泄漏...

  • Android 内存泄漏和OOM分析(一)

    这段时间在研究如何处理内存泄漏问题和防止OOM(内存溢出) 首先是内存泄漏:(这个是摘抄,加入了自己的理解) 说完...

  • 面试

    Android 面试要点 2.13更新 内存优化 什么是oom,如何避免? 如何内存控制,内存优化内存泄漏会导致内...

  • Android内存泄漏原理分析和优化实践

    内存泄漏是Android开发必须重视的问题,它可能导致应用性能低下,内存抖动,甚至OOM.如何检测和分析OOM是必...

网友评论

      本文标题:内存泄漏OOM

      本文链接:https://www.haomeiwen.com/subject/cupojttx.html