性能优化

2016-09-25  本文已影响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

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

QQ图片20160926111009.png QQ图片20160926111337.png
上一篇 下一篇

猜你喜欢

热点阅读