摘要:
在Dalvik虚拟机里,提供了一些JNI的调用测试函数,以便确认JNI的机制是否可以运行,JNI调用效率是否达到设计的目标,它是通过在registerSystemNatives函数初始化,然后调用jniRegisterSystemMethods函数来设置JNI函数。JNI的测试函数代码如下:/** JNI registration*/staticJNINativeMethodgMethods[] = { /*name, signature, funcPtr */ { "emptyJniStaticMethod0", "()V", emptyJniStat 阅读全文
摘要:
现在开始学习虚拟机的初始化过程,先从dvmStartup函数开始,这个函数实现所有开始虚拟机的准备工作。dvmAllocTrackerStartup函数初始化跟踪显示系统,跟踪系统主要用生成调试系统的数据包。dvmGcStartup函数是用来初始化垃圾回收器。dvmThreadStartup函数是初始化线程列表和主线程环境参数。dvmInlineNativeStartup函数是分配内部操作方法的表格内存。dvmVerificationStartup函数是初始化虚拟机的指令码相关的内容,以便检查指令是否正确。dvmRegisterMapStartup函数是分配指令寄存器状态的内存。dvmInst 阅读全文
摘要:
当排序操作、重建索引等大型操作无法在内存中完成时,临时表空间将为排序提供便利。一般情况下临时表空间为多个用户,多个会话所共享。不能为会话分批空间配额。临时表空间耗用过度且在不能自动扩展的情形下将收到“ORA-1652:unable to extend temp segment” 错误.下面描述了过度扩展后如何释放临时表空间。与之相关的内容参考: Oracle 表空间与数据文件 临时表空间的管理与受损恢复 Oracle 彻底 kill session一、临时表空间何时释放 检索数据的会话游标关闭时,占用的临时空间即被释放 数据库关闭,重启(一般情况),会话 log off二、释放过... 阅读全文
摘要:
通过上面的学习,了解了垃圾回收的原理和过程。那么Dalvik虚拟机是什么时候进行垃圾回收呢?要回答这个问题,那么得继续分析代码,继续进入下面的学习。其实,垃圾回收主要有两种方式,一种是虚拟机线程自动进行的,一种是手动进行的。现在先来学习自动进行的方式,所谓自动方式,就是虚拟机创建一个线程,这个线程定时进行。虚拟机在初始化时,就进行创建这个线程,如下的代码: if(gDvm.zygote){ if(!dvmInitZygote()) gotofail; } else{ if(!dvmInitAfterZygote()) go... 阅读全文
摘要:
exclude和include参数能够在使用expdp或impdp是对特定的对象或对象类型进行筛选或过滤。比如因工作的需要导出特定的表或不导出特定的表、视图以及存储过程、索引、约束、授权统计信息等等。下面将给出expdp或impdp使用exclude和include参数的方法和示例。一、exclude/include参数用法: EXCLUDE=[object_type]:[name_clause],[object_type]:[name_clause]-->排出特定对象 INCLUDE=[object_type]:[name_clause],[object_type]:[name_cla 阅读全文
摘要:
PGA,即程序全局区(Program Global Area),是Oracle体系机构的重要组成部分。Oracle 数据库对系统内存的总开销即是PGA+SGA。SGA主要由库缓存(共享SQL区和PL/SQL区)和数据字典缓存组成。而PGA包含客户端连接服务器所派生的服务器进程的集合,每个服务器进程都拥有存放数据和控制信息的私有内存区域。客户端进程和服务器端进程一一对应,由服务器端进程完成用户的请求,并将数据返回给客户端进程。一、PGA的主要特性及结构1、主要特性不同于SGA,此部分为非共享的内存服务器进程启动或创建时分配,结束时释放,只能被一个进程使用(在系统运行时,排序,连接等操作可能需要. 阅读全文