Android性能优化—内存抖动和内存泄漏

LMK;抖动、泄漏与溢出
流畅不卡

内存抖动

短时间内有大量对象创建销毁,它伴随着频繁的GC。
在这里插入图片描述
比较典型的就是字符串的拼接造成内存抖动。

比如:

String str = "";
for(int i=0; i<10; i++) {
    
    
	str += i;
}

+=操作会编译成StringBuilder,然后调用StringBuilder的append方法进行拼接。
所以这里会创建10个StringBuilder对象,每执行一次+操作都会新创建一个StringBuilder对象。

优化方法:

StringBuilder result = new StringBuilder();
// 10000
for (int i = 0; i < values.length; i++) {
    
    
    result.append(result).append(values[i]);
}

内存抖动会造成的问题:卡顿和OOM

卡顿

在这里插入图片描述
内存抖动会引起频繁的gc,gc是会stw的,会暂停用户线程。

OOM

在这里插入图片描述
CMS垃圾回收器老年代标记-清除算法:会产生内存碎片。

内存泄漏

猜你喜欢

转载自blog.csdn.net/yzpbright/article/details/109149754
今日推荐