美文网首页
DalvikVM垃圾回收机制

DalvikVM垃圾回收机制

作者: 9546bf67780f | 来源:发表于2017-12-18 14:05 被阅读0次

JVM只是一个规范,或者是符合该规范的一个实现,或者这样的实现运行的实例。JVM规范中并没有规定必须使用哪种GC机制,只规定了必须提供自动的内存管理的功能。而DalvikVM是一个具体的实现,只要能符合规范正确执行java的class文件的就是JVM,那么Android开发包中的dx和DialvikVM结合起来,就可以看成是一个JVM了,严格来说经过java Compliance Kit的测试并获得授权后才能成为JVM,它与JVM最大的区别是采用了基于寄存器的指令集而JVM采用了基于栈的指令集,可以看做是专门为ARM优化的设计。

垃圾收集是Dalvik VM内存管理的核心,垃圾收集的性能在很大程度上影响一个Android应用程序内存使用的效率。顾名思义,垃圾收集就是收集垃圾内存加以回收。

在垃圾回收算法技术中,主要有以下三种经典算法:

引用计数

MarkSweep算法

SemiSpaceCopy算法。

引用计数算法: 使用一个变量记录这块内存或者对象的使用次数

优点:

1.    (1) 在对象变成垃圾时候,可以马上进行回收,回收效率和成本都是最低的。

1.    (2)内存使用效率最高,基本上没有花费时间,不需要把所有访问COM对象都停下来。

缺点:

(1)引用计数会影响执行效率,每引用一次都需要更新引用计数器。

(2)不能解决交叉引用或者环形引用的问题。比如在一个环形链表里,每一个元素都引用前面的元素,这样首尾相连的链表,当所有元素都不需要时候,就没有办法识别回收

标记清除算法:

这个算法可以分为两大阶段:标记和清除。这种分布执行的思路构成了现代垃圾收集算法的思想基础。

与引用计数算法相比优势:

(1)该算法不需要检测每一次内存分配的指针操作,只需在标记阶段进行一次统计就行。可以非常自然的处理环形问题。

(2)创建对象销毁对象时候少了操作引用计数的开销。

缺点:标记清除阶段中把所有对象停止执行。导致垃圾回收器运行过程中应用程序必须暂时停止停止,待垃圾回收器全部运行完成,才能重新启动。

Dalvik虚拟机最常用的算法便是MarkSweep算法,该算法一般分Mark阶段(标记出活动对象)、Sweep阶段(回收垃圾内存)和可选的Compact阶段(减少堆中的碎片)。Dalvik虚拟机实现不进行可选的Compact阶段(减少堆中的碎片)。

相关文章

  • DalvikVM垃圾回收机制

    JVM只是一个规范,或者是符合该规范的一个实现,或者这样的实现运行的实例。JVM规范中并没有规定必须使用哪种GC机...

  • JavaScript的垃圾回收机制

    大纲 1、认识垃圾回收机制2、垃圾回收机制的原理3、垃圾回收机制的标记策略4、垃圾回收机制与内存管理 1、认识垃圾...

  • JS垃圾回收机制(内存问题)

    垃圾收集机制理解 垃圾收集机制:释放无用的数据,回收内存。 垃圾收集机制分类:1)自动回收 2)手动回收 垃圾收集...

  • JVM垃圾回收机制

    JVM垃圾回收 整体思维导图 带着问题理解JVM垃圾回收机制 Java为什么需要垃圾回收机制; 回收哪部分垃圾; ...

  • 垃圾回收机制

    垃圾回收机制—GC Javascript具有自动垃圾回收机制(GC:Garbage Collecation),也就...

  • javascript的垃圾回收机制与内存管理

    一、垃圾回收机制—GCJavaScript具有自动垃圾回收机制(GC:Garbage Collecation),也...

  • Java垃圾回收详解

    深入理解 Java 垃圾回收机制 深入理解 Java 垃圾回收机制 一:垃圾回收机制的意义 java 语言中一个...

  • 常见垃圾回收算法

    什么是垃圾回收(GC) 垃圾回收机制是一种找到内存中的垃圾将其释放并回收空间的机制 常见的垃圾回收算法 引用计数法...

  • 浅谈下垃圾回收机制(1)

    前言:垃圾回收机制在工作中很少碰到,看到阮一峰的书中有写,记录下。 垃圾回收机制与WeakSet(1)垃圾回收机制...

  • JavaScript中的垃圾收集

    JavaScript具有自动垃圾回收机制,垃圾回收机制会按照固定的时间间隔周期性地执行这一操作,垃圾回收机制必须跟...

网友评论

      本文标题:DalvikVM垃圾回收机制

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