当前搜索:

Android培训班(81)Dalvik虚拟机的垃圾回收3

下面就来先看看Dalvik虚拟机整个标记和清除中使用到那些函数,在文件alloc/MarkSweep.h里有函数如下:1)调用函数dvmHeapBeginMarkStep来创建位图,并从对象位图里拷贝一份位图出来,以便后面对这个位图进行标记。2)调用函数dvmHeapMarkRootSet对所有根对象进行标记。3)调用函数dvmHeapScanMarkedObjects根据上一个函数给出的根对象位...
阅读(5221) 评论(0)

Android培训班(80)Dalvik虚拟机的垃圾回收2

二、Mark Sweep算法标记-清除算法依赖于对所有存活对象进行一次全局遍历来确定哪此对象可以回收,遍历的过程从根出发,找到所有可到达对象,其它不可到达的对象就是垃圾对象,可被回收。正如其名称所暗示的那样,这个算法分为两大阶段:标记和清除。这种分步执行的思路构成了现代垃圾收集算法的思想基础。与引用计数算法不同的是,标记-清除算法不需要监测每一次内存分配和指针操作,只需要在标记阶段进行一次统计就行...
阅读(4741) 评论(0)

Android培训班(79)Dalvik虚拟机的垃圾回收1

垃圾回收技术已经出现很久了,可以追溯到20世纪60年代,在LISP语言中就开始进行应用,而后的Smalltalk,java,c#等语言更是一步一步地将其推向新的高潮。它广受技术专家的推崇,并被高度的评价,被认为是提高软件质量和生产力的一个有效的银弹,是一个具有革命性技术。由于计算机的内存资源总是有限的,为了不同的程序运行,必须把不需要使用的内存回收,以便重新使用。假如那一天计算机的内存足够大,可以...
阅读(5124) 评论(0)

Android培训班(78)Dalvik虚拟机的寄存器操作

在前面已经说到Dalvik虚拟机是基于寄存器运行的虚拟机,这是与JAVA虚拟机有本质上的区别,因为它是基于栈运行的虚拟机,因而Dalvik虚拟机运行的速度更快,更高效。下面就来分析一段代码片段,看看是怎么样基于寄存器操作的,以便有更深入的了解。代码如下:#defineHANDLE_OP_SHX_INT(_opcode, _opname, _cast, _op)...
阅读(4695) 评论(0)
    个人资料
    • 访问:5898476次
    • 积分:76234
    • 等级:
    • 排名:第22名
    • 原创:1624篇
    • 转载:61篇
    • 译文:11篇
    • 评论:2102条
    文章存档