美文网首页
性能优化

性能优化

作者: 好大一只鹏 | 来源:发表于2016-09-25 23:02 被阅读0次

当我们点击了StartActivityB,内存情况是这样的,发生了内存泄露

QQ图片20160925221213.png

并且用Allocation Tracking检测到创建了很多的Rect对象,造成的原因是一下代码

private void startAllocationLargeNumbersOfObjects() {  
  Toast.makeText(this, "请注意查看MemoryMonitor 以及AllocationTracker", Toast.LENGTH_SHORT).show();  
  for (int i = 0; i < 10000; i++) {  
      Rect rect = new Rect(0, 0, 100, 100);  
      System.out.println("-------: " + rect.width());  
  }
}

在这里,我们发现了一个非静态内部类的静态实例造成的泄露,


QQ图片20160925224543.png

Handler 造成的内存泄露:在这里我们的handler是持有MainActivity的实例引用,无法被垃圾回收

QQ图片20160925224825.png
  • 解决办法
    1.不要让静态变量引用Activity
    2.使用WeakReference
    3.使用静态内部类来代替内部类
    4.静态内部类使用弱引用来引用外部类
    5.在声明周期结束的时候释放资源
  • 减少内存使用
    1.使用更轻量级的数据结构
    2.避免在onDraw方法中创建对象
    3.使用对象池(Message.obtain())
    4.LRUCache
    5.Bitmap内存的复用,压缩
    6.StringBuilder

UI自定义控件部分出现了过度绘制

  • 在自定义的部分中,onDraw中创建了对象,而且是两个对象
QQ图片20160926111009.png
  • 在UI中使用了RelativeLayout
QQ图片20160926111337.png
  • 解决办法,避免UI的卡顿
    避免在onDrawn中创建对象
    减少View的层级
    避免在UI顶层使用RelativeLayout
    自定义控件控制绘制的复杂度
  • 优化过度绘制
    减少View的层级
    减少不必要的背景
    .9图用作背景
    ViewStub
    ClipRect&QuickReject
    在这里我们要修改onDraw()方法


    QQ图片20160926113601.png

相关文章

  • Android性能优化 - 消除卡顿

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化 - 内存优化 性能分析工具 - Tra...

  • Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - Trac...

  • 前端性能优化(中)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(上)...

  • 前端性能优化(下)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(中)...

  • Awesome Extra

    性能优化 性能优化模式 常见性能优化策略的总结 Spark 性能优化指南——基础篇 Spark 性能优化指南——高...

  • 常用的后端性能优化六种方式:缓存化+服务化+异步化等

    性能优化专题 前端性能优化 数据库性能优化 jvm和多线程优化 架构层面优化 缓存性能优化 常用的后端性能优化六大...

  • webpack 性能优化

    webpack性能优化 开发环境性能优化 生产环境性能优化 开发环境性能优化 优化打包构建速度 优化调试功能 生产...

  • iOS性能优化 - 整理

    本文主要包含: 性能优化 - 卡顿性能优化 - 耗电优化性能优化 - APP启动优化安装包瘦身 一  性能优化 -...

  • 【React.js 20】React性能优化

    React性能优化 React性能优化主要分三块: React 组件性能优化 属性传递优化针对单组件性能优化,很多...

  • Android性能优化(下)

    Android性能优化 内存泄漏和性能优化方式Android性能优化(上)数据库优化和网络优化Android性能优...

网友评论

      本文标题:性能优化

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