【拒绝一问就懵】之没据说过内存抖动吧

参考资料

Google官方讲解视屏数组

背景介绍

【拒绝一问就懵】之你多少要懂点内存回收机制 中我提到过 内存抖动 会引发频繁的GC,从而使UI线程被频繁阻塞,致使画面卡顿。此次咱们就聊聊内存抖动。缓存

须要避免内存抖动

内存抖动是因为短期内有大量对象进出post

Young Generiation区致使的,它伴随着频繁的GC。一般存在内存抖动时,咱们能够在Android Studio 的 Monitors 中看到以下场景:

内存抖动图

下面是避免发生 内存抖动的几点建议:

  • 尽可能避免在循环体内建立对象,应该把对象建立移到循环体外。
  • 注意自定义View的onDraw()方法会被频繁调用,因此在这里面不该该频繁的建立对象。
  • 当须要大量使用Bitmap的时候,试着把它们缓存在数组中实现复用。
  • 对于可以复用的对象,同理可使用对象池将它们缓存起来。

总结

总之,由于内存抖动是因为大量对象在短期内被配置而引发的,因此咱们要作的就是谨慎对待那些可能会大量建立对象的状况。线程

相关文章
相关标签/搜索