一、什么是内存抖动?
在Java中,每创建一个对象,就会申请一块内存,存储对象信息;
每分配一块内存,程序的可用内存也就少一块;
当程序被占用的内存达到一定临界程度,GC
也就是垃圾回收器(Garbage Collector)
就会出动,来释放掉一部分不再被使用的内存。
这本身没有问题,但是当频繁创建对象就会造成内存不断地攀升
,在回收
了之后又迅速涨起来
,接着又一次的回收
。在短时间内反复地发生内存增长和回收,这就是内存抖动(Memory Churn)
。
我们可以通过 Android Studio
的 Memory Profiler
来直观地观察到这种现象:
因此,内存抖动的定义如下:
内存抖动是指系统在处理任务时,由于频繁地进行内存页面的调度和