11 2011 档案
摘要:下面就来先看看Dalvik虚拟机整个标记和清除中使用到那些函数,在文件alloc/MarkSweep.h里有函数如下:1)调用函数dvmHeapBeginMarkStep来创建位图,并从对象位图里拷贝一份位图出来,以便后面对这个位图进行标记。2)调用函数dvmHeapMarkRootSet对所有根对象进行标记。3)调用函数dvmHeapScanMarkedObjects根据上一个函数给出的根对象位图,对每一个根相关的位图进行计算,如果这个根对象有被引用,就标记为使用。这个过程是递归调用的过程,从根开始不断重复地对子树进行标记的过程。4)调用函数dvmHeapHandleReferences对J
阅读全文
摘要:海里的小鱼问大鱼, “大鱼啊大鱼,我常常听人们说起海,可究竟什么是海呢?” “你的周围不就是海吗?” “啊,但是……为什么我又看不见呢?” “海既在你的里面,也在你的外面。你生于海,归于海,海包围着你,就好像你自己的身体一样……” 鱼相忘于江湖,人相忘于道术。 你我何尝不是这大海里的小鱼呢?日出而作,日落而息,茫然追求,随波逐流。所谓何事?尚未可知。只因为我们尚未看清事实的真相,尚未了解事实的本体。其实一切就在生活之中,就在分分秒秒,就在呼吸之间。吃喝拉撒,穿衣睡觉、日月轮回、春去秋来、花开花谢、潮起潮落、生老病死等一切皆自然之理,亘古不变。舍此之外,功名利禄,得失毁誉,是非人我,那即是人我之
阅读全文
摘要:可以设置设置几天、小时、分钟、秒演示地址:http://www.corange.cn/demo/3797/index.html<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv
阅读全文
摘要:在一条SQL语句中,当使用索引时,cosistent gets 减少,而cost增加。理论上在稳定后的执行计划中,physical reads为零值的前提下,cost应当相应减少。下面来看看其原由。1、原始的SQL语句SQL> SELECT acc_num, amount, curr_cd 2 FROM voucher_tbl ...
阅读全文
摘要:Linux 的命令非常之多,而使用的最多最广最基本的莫过于一些常用的命令,如目录命令即是如此。Linux的常用目录命令与DOS中的目录命令非常相似,只不过使用了不同单词的缩写而已。如cd(change directory)等同于Windows中的cd,ls命令等同于Windows中的dir。尤其对早期使用过DOS的人而言,这些并不陌生。同样在Linux中的绝对路径、相对路径的概念与Windows中的路径表述其实质是一样的。本文仅仅列出几个常用的目录命令以及各个命令的常用参数。一、目录路径绝对路径 由根目录写起的路径。如:/home/oracle/robinson 对于shell script.
阅读全文
摘要:二、Mark Sweep算法标记-清除算法依赖于对所有存活对象进行一次全局遍历来确定哪此对象可以回收,遍历的过程从根出发,找到所有可到达对象,其它不可到达的对象就是垃圾对象,可被回收。正如其名称所暗示的那样,这个算法分为两大阶段:标记和清除。这种分步执行的思路构成了现代垃圾收集算法的思想基础。与引用计数算法不同的是,标记-清除算法不需要监测每一次内存分配和指针操作,只需要在标记阶段进行一次统计就行了。标记-清除算法可以非常自然的处理环形问题,另外在创建对象和销毁对象时少了操作引用计数值的开销。不过,标记-清除算法也有一个缺点,就是需要标记和清除阶段中把所有对象停止执行。在垃圾回收器运行过程中,
阅读全文
摘要:昔年寒山问拾得曰:“世间谤我、欺我、辱我、笑我、轻我、贱我、恶我、骗我,该如何处之乎?” 拾得回答说:“你不妨忍着他、谦让他、任由他、避开他、耐烦他、尊敬他、不要理会他,再过几年,你且看他。”貌似傻子和疯子之间的一番对话。尤其在现代人看来真是不可理喻。然实则蕴含着深刻的禅机与般若智慧。历来无数文人墨客,风云人物,名垂青史之辈无不具有此上所说的所谓忍辱之功。文王拘而演周易;仲尼厄而作《春秋》;屈原放逐乃赋《离骚》;司马迁受宫刑,《史记》终成;贝多芬聋盲,《命运》铸就;史蒂芬·霍金斯高瘫,却成物理界泰斗。想来这些人命运几多坎坷,忍辱、精进、能屈能伸,却终不为其所困。真令我辈等汗颜不止。其
阅读全文
摘要:高水位线好比水库中储水的水位线,用于描述数据库中段的扩展方式。高水位线对全表扫描方式有着至关重要的影响。当使用delete 操作表记录时,高水位线并不会下降,随之导致的是全表扫描的实际开销并没有任何减少。本文给出高水位线的描述,如何降低高水位线,以及高水位线对全表扫描的影响。一、何谓高水位线如前所述,类似于水库中储水的水位线。只不过在数据库中用于描述段的扩展方式。可以将数据段或索引段等想象为一个从左到右依次排开的一系列块。当这些块中未填充任何数据时,高水位线位于块的最左端(底端)随着记录的不断增加,新块不断地被填充并使用,高水位线随之向右移动。高水位线之上为未格式化的数据块。删除(delete
阅读全文
摘要:垃圾回收技术已经出现很久了,可以追溯到20世纪60年代,在LISP语言中就开始进行应用,而后的Smalltalk,java,c#等语言更是一步一步地将其推向新的高潮。它广受技术专家的推崇,并被高度的评价,被认为是提高软件质量和生产力的一个有效的银弹,是一个具有革命性技术。由于计算机的内存资源总是有限的,为了不同的程序运行,必须把不需要使用的内存回收,以便重新使用。假如那一天计算机的内存足够大,可以一年内创建的对象,所占用的内存都卓卓有余时,就没有必要使用这种回收技术了。在C++/C的世界里,没有回收技术,其实就是需要开发人员自己负责把它使用完成的内存,主动去删除它。在Dalvik虚拟机实现里,
阅读全文
摘要:在前面已经说到Dalvik虚拟机是基于寄存器运行的虚拟机,这是与JAVA虚拟机有本质上的区别,因为它是基于栈运行的虚拟机,因而Dalvik虚拟机运行的速度更快,更高效。下面就来分析一段代码片段,看看是怎么样基于寄存器操作的,以便有更深入的了解。代码如下:#defineHANDLE_OP_SHX_INT(_opcode, _opname, _cast, _op) \ HANDLE_OPCODE(_opcode /*vAA,vBB, vCC*/) \ { ...
阅读全文
摘要:ROWID 是一个类似于rownum的伪列,用于定位数据库中一条记录的一个相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一。而对于聚簇表,由于聚簇特性,不同表上的记录由于存储在相同的簇上,因此会拥有相同的ROWID。数据库的大多数操作都是通过ROWID来完成的,而且使用ROWID来进行单记录定位速度是最快的。下面将给出ROWID的相关描述。一、ROWID的特性组成及用途1、特性 相对唯一性(聚簇表上不唯一) 一旦确定,不可随意更改 使用10个字节存储(扩展rowid),显示为18位的字符串 特殊情况下,ROWID会发生变化(如下列情形) 表的导入导出操作 alter t
阅读全文
摘要:自适应游标共享Adaptive Cursor Sharing或扩展的游标共享(Extended Cursor Sharing)是Oracle 11g的新特性之一,主要用于解决以前版本中由于绑定变量窥探导致SQL语句无法获得最佳执行计划的缺陷,即能够对效率低下的游标(子游标)进行自动识别而选择最佳的执行计划。本文详细描述了自适应游标共享并给出示例。 有关绑定变量窥探请参考:Oracle 绑定变量窥探一、示例自适应游标共享 1、创建演示环境 SQL> select * from v$version where rownum<2; ...
阅读全文
摘要:Bind Peeking是Oracle 9i中引入的新特性,一直持续到Oracle 10g R2。它的作用就是在SQL语句硬分析的时候,查看一下当前SQL谓词的值,以便生成最佳的执行计划。而在oracle 9i之前的版本中,Oracle 只根据统计信息来做出执行计划。一、绑定变量窥探 使用SQL首次运行时的值来生成执行计划。后续再次运行该SQL语句则使用首次执行计划来执行。 影响的版本:Oracle 9i, Oracle 10g 对于绑定变量列中的特殊值或非均匀分布列上的绑定变量会造成非高效的执行计划被选择并执行。 要注意的是,Bind Peeking只发生在硬分析的时候,即SQL被第一...
阅读全文