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

内存抖动

介绍:内存抖动是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())。

处理方法

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容