安卓

Android内存抖动——检测、常见场景、处理

2021-07-16  本文已影响0人  无问o

内存抖动

介绍:内存抖动是Android性能优化中内存优化的一种情况,主要是由于频繁的对象创建导致内存抖动,最终可能导致卡顿和OOM。

检测

demo:点击一次button,将会创建100000个对象,不断创建、GC回收(因为字符串拼接要创建StringBuilder对象)

Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str = "";
                for(int i=0; i< 100000; i++) {
                    str += i;
                }
            }
        });

利用Android Profiler进行检测:

Record截取一段时间进行分析:


可以看到创建了大量的StringBuilder对象,也就是在大循环中频繁创建对象,GC回收频繁,导致内存抖动。

总结:内存抖动可采用Android Profiler进行检测,可截取某段时间进行对象分析,查看哪些对象被频繁创建。

内存抖动常见场景

大循环中创建对象、自定义View的onDraw()方法中创建对象(屏幕绘制与动画执行时会频繁调用onDraw())。

处理方法

将对象创建放到循环外,对于无法避免的创建对象情况,可采用对象池模型进行缓存,复用对象,需注意用完后要手动释放对象池中对象。

上一篇下一篇

猜你喜欢

热点阅读