在 Andorid 中为什么要避免「内存抖动」?

内存抖动是指内存频繁的分配和回收,占用内存忽高忽低,内存占用图形上呈现锯齿状
在 Android 开发过程中,你一定听说过「内存抖动」这个词,别人肯定也告诫过你要避免内存抖动,但是为什么呢?

但是其实初步想,为什么要避免内存抖动呢?频繁创建对象,被 Java 虚拟机的回收机制自动回收了,这不是挺好的吗?开发者为什么还需要关心这个问题呢?

下面讲一下原因

1.频繁 GC 会导致卡顿
在传统的 GC 模式下,当虚拟机触发一次 GC,会先暂停所有线程。当频繁的 GC 这样 Android 主线程会被频繁的暂停,势必会引发卡顿。

2.GC 会导致内存碎片化
在传统的 GC 模式下,回收一次后,会导致内存碎片化,即导致很多内存块不连续,导致寻址变慢拖慢程序。极端情况,内存碎片化严重,这也导致无法为新的对象申请一块连续的内存,极大降低对内存的利用率,,而这又反过来提高了 GC 的概率。

Google 为了缓解上面的问题,引入了 ART 虚拟机。但是也不能完全避免上述问题。所以开发者一定还是要考虑「内存抖动」的情况,优化自己的代码。

你可能感兴趣的:(andorid)