美文网首页
浅谈Android开发中的内存优化

浅谈Android开发中的内存优化

作者: DASH_1024 | 来源:发表于2019-06-16 22:40 被阅读0次

    Android开发中,常常需要对App进行性能优化,这其中很重要的一点是进行内存优化,避免出现出内存泄露、内存溢出、内存空间占用过大等问题。虽然Java有自动回收的机制,可是这不意味着Java中不存在内存泄漏的问题,而内存泄漏会很容易导致严重的性能问题。内存泄漏指的是那些程序不再使用的对象无法被GC识别,这样就导致这个对象一直留在内存当中,占用了宝贵的内存空间。显然,这还使得每级Generation的内存区域可用空间变小,GC就会更容易被触发,从而引起性能问题。

    内存泄漏出现的常见情况

    • 单例中引用的上下文Context,引用了Activity中的Context, 这样会造成内存泄漏,要引用Application中的Context;
    • 资源性对象未关闭。比如Cursor、File文件等,往往都用了一些缓冲,在不使用时,应该及时关闭它们。
    • 注册对象未注销。比如事件注册后未注销,会导致观察者列表中维持着对象的引用。类的静态变量持有大数据对象。
    • 非静态内部类的静态实例。
    • Handler临时性内存泄漏。如果Handler是非静态的,容易导致 Activity 或 Service 不会被回收。
    • 容器中的对象没清理造成的内存泄漏。
    • WebView。WebView 存在着内存泄漏的问题,在应用中只要使用一次 WebView,内存就不会被释放掉。

    怎样进行内存优化

    • 对象引用。强引用、软引用、弱引用、虚引用四种引用类型,根据业务需求合理使用不同,选择不同的引用类型。
    • 减少不必要的内存开销。注意自动装箱,增加内存复用,比如有效利用系统自带的资源、视图复用、对象池、Bitmap对象的复用。
    • 使用最优的数据类型。比如针对数据类容器结构,可以使用ArrayMap数据结构,避免使用枚举类型,使用缓存Lrucache等等。
    • 图片内存优化。可以设置位图规格,根据采样因子做压缩,用一些图片缓存方式对图片进行管理等等。

    内存优化分析工具

    • MAT(Memory Analysis Tools)
    • Heap Viewer
    • Allocation Tracker
    • Memory Monitor
    • LeakCanary

    相关文章

      网友评论

          本文标题:浅谈Android开发中的内存优化

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