美文网首页性能优化相关
四、内存抖动与OOM

四、内存抖动与OOM

作者: Serenity那年 | 来源:发表于2018-10-28 21:26 被阅读5次

    1.内存抖动:内存频繁的分配和回收,频繁的gc会导致UI卡顿,严重的时候导致out of memory error(内存超过分配的最大值)

    使用adb命令查看手机给每个应用分配的内存大小:
    adb shell getprop dalvik.vm.heapsize

    2.垃圾回收算法

    • 1.标记--清除算法 :直接回收标记的内存,不移动存活对象,导致内存不连贯,碎片化严重;但是不用移动,执行速度快,效率高;
    • 2.复制算法:浪费50%的内存;
    • 3.标记--压缩算法:会对存活对象移动,没有碎片;但是因为移动存活对象,有额外开销;

    3.分代
    java虚拟机的堆内存分为新生代和老年代及永久代;
    新生代又分为亚当区和夏娃区;新创建的对象在亚当区,当亚当区满的时候,会转移到夏娃区;但是在夏娃区又分为两个区,当对象每经历一次gc,“年龄”都会加一,当达到阈值,就会转移到夏娃的第二区;再到达一定阈值,就会转移到老年代;


    屏幕快照 2018-10-15 下午1.44.45.png

    垃圾回收器是垃圾回收算法的实现;新生代和老年代回收器实现的算法是不一样的;
    新生代gc :minor gc
    老年代gc: magor gc

    Android垃圾回收采用CMS垃圾收集器(采用标记--清除算法),与所有用户线程并发进行;

    相关文章

      网友评论

        本文标题:四、内存抖动与OOM

        本文链接:https://www.haomeiwen.com/subject/kqdfzftx.html