内存抖动
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
test();
}
private void test(){
for (int i = 0; i < 100; i++) {
testMemory();
}
}
private void testMemory() {
String s = "";
for (int i = 0; i < 50000; i++) {
s = s + i + "";
}
}
}
如上写的代码,会产生内存抖动。
内存抖动的profile效果如上图所示。内存抖动会频繁GC,GC的时候会停止其它线程,所以会造成UI线程卡顿。因此要避免内存抖动的情况。
解决方案
尽量避免在循环体内创建对象,应该把对象创建移到循环体外。
注意自定义View的onDraw()方法会被频繁调用,所以在这里面不应该频繁的创建对象。
当需要大量使用Bitmap的时候,试着把它们缓存在数组中实现复用。(Glide复用池)
对于能够复用的对象,同理可以使用对象池将它们缓存起来。
来源:CSDN
作者:csdn_Mew
链接:https://blog.csdn.net/CSDN_Mew/article/details/104029723