• 论文导航
  • 论文专题
  • 论文源代码
  • 设计资源
  • 原创论文
  • 交流互动
  • 作业答案
  • 工具
  • 会员
  • 设计专题

首页|原创论文|原创论文|论文全套|点数论文|实用文档|课程设计|定作论文|毕业论文|考试资料|知识在线|密码保护|大学生|论文帮助|保健养生|健康家园|期刊导航|创业资料|毕业论文|站长学院|学习娱乐|演示文稿|免费论文|源代码|博士论文|研究论文|参考论文|下载分类|写作指导|应用文|英语论文|文化|哲学|艺术类|计算机|工学|教育类|文学|社会学|政治|医药学|理学|法学|公共管理|财务管理|工商管理|会计审计|管理学|证券金融|财政税收|经济学|论文范文|网络学院|早教|就业指导|求职英语|简历|公务员|动漫频道|作文大全|土木工程|法学|计算机|护理学|会计学|交通运输|工商管理|汉语言|原创|计算机论文全套|计算机点数论文|点数参考论文|ASP设计|ASP.NET设计|VB设计|JSP设计|C#设计|PHP设计|JAVA设计|VF设计|DELPHI设计|PB设计|VC++设计|计算机网络|机械论文|单片机论文|电子论文|asp源码| asp精品| php精品源码| vb精品| vfp精品源码| Java精品|Asp.net精品源码|Jsp精品|定作论文

BS| CS | vb| VC | 设计| 系统 | 毕业| JSp | web| net | PLC| FLASH | sql| PHP | CAD| 源码 | pb| delphi | 方案| ppt | J2ee| HTML | android| access | vfp| 模具 | j2me| service | photo| CPA | TCP| J2ME | ASP| java | ATL| 案例 | 单片机| Ajax | powerbuilder| frontpage | div| 报告 | 毕业设计| 电工 | 课程| 嵌入式 | 通讯| 软件测试 | Unix编程| 3D图形编程 | 人工智能| 图形 | Internet/IE编程| 界面编程 | SQL Server| 代理服务器 | 系统编程| 单片机开发 | 人工智能| 文件操作 | RichEdit| 屏幕保护 | 网格计算| uCOS | JspServlet| 驱动编程 | Shell编程| MTK | Java编程| 酒店行业 | 其他小程序| 外挂编程 | VC书籍| .net编程 | 教育系统应用| 中间件编程

下载目录|论文及源代码|asp源码|asp精品源码|php精品源码|vb精品源码|vfp精品源码|Java精品源码|vc++精品源码|ACCESS精品源码|Authorware精品源码|Asp.net精品源码|Jsp精品源码|DIV+CSS模板|FLASH精品源码|PB精品源码|Android源码 |asp代码|ajax代码|php代码|html代码|java代码|jsp代码|pb代码|Ruby代码|sql代码|vfp代码|数据结构与算法|汇编语言|Perl代码|delphi代码|flash代码|js代码|net代码|vb代码|vc代码|DVD光盘源代码|ipad源代码|后台模板|CSS菜单|CSS图表|图片图标|精美Word模板|精美EXCEL模板|精美PPT模板|系统操作视频和下载|ASP在线学习|PHP在线学习|JSP在线学习|JAVA在线学习|NET在线学习|VC在线学习|VB在线学习|VFP在线学习|SQL在线学习|PB在线学习|PHOTOSHOP在线学习|Delphi在线学习|计算机点数论文|点数参考论文|ASP设计|ASP.NET设计 |VB设计|JSP设计|C#设计|PHP设计|JAVA设计|VF设计|DELPHI设计|PB设计|VC++设计|计算机网络|机械论文|单片机论文|电子论文

C++|VB|ASP|VF|DELPHI|JSP|电气|计算机|经济|打包下载|查询工具|设计定作|设计专题|ASP,网站,C/S,设计等定作

网站首页|原创系统|工商管理|护理学|会计学|行政管理|计算机|土木工程|汉语言|机械设计|交通运输|法学|卫生法学

内涵段子| 冷笑话| 幽默笑话| 短信笑话| 其它笑话| 大杂烩| 青芜校园| 社会广角| 动漫风云| 征婚交友| 股票基金| 私房话|社会趣闻| 手机地带| 其它笑话 动漫风云| 冷笑话

作业答案| 小学作业| 高中作业| 中专作业| 初中作业| 大专作业| 大学作业| 研究生作业|原创论文|论文下载|下载源代码|精器资源|会员中心| 查询资料| 暑假作业| 家庭作业

IP地址查询 搜索IP地址所在的地理位置 | 英文词典、在线翻译 在线新华字典/生字查找 | 网速测试 测试网络连接速率 | 文件扩展名文件后缀名查询 | 下载地址转换 迅雷/快车下载地址转换 | 在线生成Favicon图标 | 繁体与简体自由转换工具 | 论坛常用发帖代码 | 在线制作个性邮箱图标 || 汉字拼音及五笔编码查询 | 汉字拼音查询 | 查询域名或同IP下所有站点 | Google PageRank查询 | 查看域名WHOIS信息 | ALEXA世界排名查询服务 | HTML转换JS代码 | 将代码以BASE64方式加密/解密 | JS在线加密/解密 | 字符转UTF-8编码 | 链接地址16进制加密 | 字符串32位MD5加密 | 将代码以Escape加密/解密 | 字符串转换为ASCII码器 | 代码美化、压缩、混淆加密 | ASCII字形生成器 | 页面转换效果生成器 | 正则表达式检测器

会员中心|会员登录|我要充值加点|我要充值论文

全套论文|设计下载|源码|原创论文|下载目录|论文总站|论文搜索|最新论文| 万能工具|定作论文|定作设计|毕业设计 |Word格式|管理系统 课程设计|论文专题 |保存到桌面 |演示|系统 | 设计 | 毕业 | 通信 | 模具 | 单片机 | 方案 | 答辩PPT|J2EE

您现在的位置:网学>>免费论文>>论文导航>>Windows编程>>Java开源代码
  • 支持复合对象的Java 虚拟机内存管理技术研究

    栏目导航 Windows编程 2013-10-22 2013-10-22  版权 版权投诉 上传资料 上传资料 复制论文网址 复制论文网址 上传用户:zero07

    【Java开源代码栏目提醒】:网学会员,鉴于大家对Java开源代码十分关注,论文会员在此为大家搜集整理了“支持复合对象的Java 虚拟机内存管理技术研究 - 期刊论文”一文,供大家参考学习!

    支持复合对象的 Java 虚拟机内存管理技术研究1 陈灏,陈榕 (同济大学基础软件工程中心,上海,200092)摘要: CAR是一种二进制构件技术,Elastos是CAR技术的软件生态环境,是CAR构件的运行时环境。

        Elastos的表现形式是操作系统或中间件,它通过把网络纳入计算及存储,统一管理,简化了在高度分布式网络环境中的应用程序开发。

        Java是跨平台的语言,它依赖的是Java虚拟机在特定平台上对Java虚拟机规范的满足。

        Java程序依赖Java虚拟机解释执行,在性能上不如可以编译执行的本地代码,软件尺寸、功耗等表现也不如本地代码。

        本文在基于Google的开源工程Dalvik基础上,结合CAR和Java虚拟机技术,在Elastos平台上提出了一种Java和CAR混合编程的技术,旨在达到让Java虚拟机上运行CAR构件目的的同时,利用CAR构件提高Java程序的运行速度而不破坏Java的编程模型,从而起到优化JAVA运行时的目的。

        关键词:Java;Java 虚拟机;CAR 构件;Elastos;Dalvik The Research of Dalvik’s Memory Management with supporting Compound Objects CHEN HaoCHEN Rong System Software Engineering CentreTongji UniversityShanghai 200092China Abstract: CAR is a binary component technology and Elastos is a software environmentbased on CAR technology the running enviroment of CAR Component. Elastos represents asoperating system or middleware and treats the net as computing and storing resources. This makethe application development easily in distributed network enviroment. Java is a cross-platformlanguage this feature depends on the Java virtual machine to satisfy The Java Virtual MachineSpecification on the specific platform. Java program have to be interpreted before being executedon Java virtual machine then its performance power and size can hardly be accomplished withnative code. This paper presents a technology called JavaCAR mixed programming modelwhich is base on dalvik the Google’s open-source project simultaneously take CAR and Javavirtual machine technology into consideration. The JavaCAR let CAR cooperate with Javavirtual machine this will make the Java program work more effectively but needn’t change theJava programming model. Key Words: Java Java Virtual Machine CAR Component Elastos Dalvik1 什么是复合对象 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

        对象具有可以用数据值来描述的状态和用于改变对象状态的操作,对象实现了数据和操作的结合,使数据和操作封装于对1 基金项目:核高基重大专项:智能手机嵌入式软件平台研发及产业化,课题编号:2009ZX01039-002-002 ,男,四川人,硕士研究生,研究方向:嵌入式操作系统、系统软件支撑技术;作者简介:陈灏(1985--) ,男,北京人,博士生导师,教授,中心主任,科泰世纪首席科学家,研究方向:嵌入式系统,构件导师简介:陈榕(1957--)技术。

        象的统一体中,而具有相同特性(数据)和行为(操作)的对象的抽象就是类。

        面向对象技术则是把客观世界细分成对象,组成对象系统,直观、自然地描述客观世界中的事物。

        其具有抽象性、封装性、继承性和多态性的基本特征。

        1.1 复合对象的定义 从对象功能角度讲,我们常见的对象有下面几种:(1)JavaScript 的 Prototype 技术,其通过动态增加 B 对象为 A 对象的属性来将二者组合为一个复合对象, 其对外提供统一操作。

        (2)DOM 技术,其通过 HTML 结点间的多级继承来达到将所有 HTML 对象组合为一个复合对象(DOM 树) 。

         程序=数据+算法。

        两个程序间是否可以互操作是指:它们是否可以相互直接访问数据(如一个进程内的 C/C程序)、通过中间机构相互访问数据(如 Java/Js/Lua 虚拟机内的对 、数据只能通过接口形式获得(如两个 COM 对象、Android 中被 IBinder 隔开的对象)象) 、 。

        而在本文所说的复合对象中,Java 对象部数据只能通过服务形式交换(如 B/S 中的情形)分由 Java 程序(字节码)访问,C对象部分由 C函数(本地码)访问。

         一个对象 Obj 由数据集 S(数据属性)和操作集 F(对 S 的行为和操作,通常由方法或函数实现)构成,可以记为 ObjSF,如图 1: 操 作 集 F 数据集S 图 1 对象的构成 将两个对象组合成一个复合对象能够分别利用两个对象系统较好的特性,最终提高整个复合对象的效率。

        两个对象 Obj1(S1F1)和 Obj2(S2F2)间需要通过对方的操作集 F1/F2访问对方的数据属性 S1/S2,即统一接口访问。

        而对于一个对象 Obj(SF)中的数据集 S和操作集 F 有多种存储方式(比如 C中,数据集 S 存储在一块内存,操作集 F 存储在一个虚表,而在 Java 中,数据集 S 存储在一块 GC 堆内存,操作集 F 存储在类元数据的方法 。

        表中) 本文所指的复合对象是由一个 Java 对象和多个 C对象共同构成的对象。

        如图 2: Ja va 方 法 Java对象 C C C 函 函 函 数 数 数 C对象1 C对象2 C对象n 图 2 复合对象构成 其中,Java 对象指具有部分属性和方法的 Java 对象,C对象 1 指具有另一部分属性和方法的 C对象,C对象 2n 指从 Java 对象的某个父对象(同样是复合对象)中继承的其具有部分属性和方法的 C对象。

        1.2 Property粘起来的数据体 Ja va 方 法 Java对象 正常属性 C C C Java对象 函 函 函 共享属性 数 数 数 C对象1 C对象2 C对象n 快速属性 快速属性 快速属性 图 3 复合对象的具体属性构成 Java 程序员在设计一个类时需要考虑三种属性:正常属性、共享属性和快速属性。

        正常属性指可以通过 Java 方法和 JNI 访问的属性,共享属性指可以被 Java/JNI 和 C程序同时 ,快速属性指需要被 C程序快速访问的访问的属性(但需要通过 Getter/Setter 保持同步)属性。

        这样一来,如果快速属性存在则设计成一个复合对象,正常属性和共享属性放入 Java ,快速属性放入 C对象(由 C函数访问)对象(由 Java 和 JNI 方法访问) ,如图 3。

         正常属性和共享属性通过复合类中正常 Java 方法或 JNI 函数访问,快速属性通过复合类中声明的(非 JNI 函数)C函数实现的 Java 本地方法访问。

        1.3 Java操作面 从Java程序的角度看复合对象,能看到整个复合对象,包括三种属性(正常、共享和快速属性),调用3种访问方法(访问正常和共享属性的Java、访问正常和共享属性的JNI方法 。

        和访问共享和快速属性的C实现的本地方法)1.4 C/C操作面 ,调用 1 种访问 从 C/C程序角度看复合对象,只能看到两种属性(共享和快速属性) 。

        方法(C/C函数)1.5 复合对象的继承 支持 Java 继承中的 C对象的实例化继承。

        类 A 继承了复合类 B,则类 A 的对象也自动得到复合类 B 对象中的 C对象。

        继承中的虚/实方法引用规则遵循 Java 原则。

        2 对象内存管理2.1 低交互内存,元数据、类信息等,Linear内存 低交互内存指不会经常修改读操作较多的内存数据比较稳定 元数据:Java 是一个基于元数据的语言,每一个类(Class)描述一类对象,创建对象时必须先由类加载器(ClassLoader)加载响应类,即创建一个 ClassObject 对象其记录了关于这个类和对象的所有描述信息。

         Linear 内存:Java 虚拟机启动时回通过 MMap 映射创建一个线性内存,用于存放类(ClassObject)的元数据,在 Linear 内存上线性连续存放,在虚拟机关闭时释放线性内存。

        2.2 GC堆,external内存 GC 堆:Java 虚拟机启动的时候会创建一个 GC 堆,用来动态对象的创建,GC 堆会自动垃圾回收。

        虚拟机会创建一个位图liveBits来记录创建的对象,当需要垃圾回收时,扫描所有的引用表和调用栈,在另一个位图markBits标记对象,最后比较两个位图、释放垃圾对象。

        最后,在虚拟关闭时释放 GC 堆。

         external 内存:Java 虚拟机中除 GC 堆外的外部堆内存即 CRT 创建的堆包括方法调用栈、本地调用栈和方法区这部分需要虚拟机自己管理。

        2.3 GC堆中的强引用、软引用、弱引用和虚引用 强引用:如果一个对象具有强引用,那垃圾回收器绝不会回收它。

        当内存空间不足,Java虚拟机宁愿抛出 OutOfMemoryError 错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。

         软引用:如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。

        只要垃圾回收器没有回收它,该对象就可以被程序使用。

        软引用可用来实现内存敏感的高速缓存(下文给出示例)。

         弱引用:弱引用与软引用的区别在于只具有弱引用的对象拥有更短暂的生命周期。

        在垃圾回收器线程扫描它所管辖的内存区域的过程中, 一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。

        不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。

         虚引用:并不会决定对象的生命周期。

        如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。

        虚引用主要用来跟踪对象被垃圾回收器回收的活动。

        2.4 基于进程的内存释放策略 Dalvik 中各种内存释放策略如下: (1)GC 堆:GC 堆由虚拟机启动时创建,并在关闭时释放。

        虚拟机会在 GC 堆内存不 因此当 GC 回收对象时同步释放整个复合对象。

        足时以 Mark-Sweep 机制进行 GC 对象回收。

        先回收 Java 对象,再回收 C对象(根据对象对应类的元数据判断是否是 CAR 化的 Java复合对象)。

         (2)线性方法区:线性方法区由虚拟机启动时通过 MMapp 创建,用于线性存放类的元信息。

        复合类的类信息(包括描述 Java 类的 ClassObject 元信息和描述 C类的构件对象)也存于此内存区。

        线性方法区在退出虚拟机进程的时候释放,同时释放构件对象。

         ,在退出虚拟 (3)external 内存:用于存放与复合类相关的外部资源(如打开文件等)机进程时释放。

        3 并行编程支持 多核 CPU 的 SMP 体系结构支持。

        内存管理时的一致化处理4 监视与优化 ( 嵌 入 式 内 存 管理 评 价 :仿 代 码 密度 可 以 定义 “ 计 算的 内 存 密度 ” memory accessfrequency),即为了一个计算,需要进行的内存操作,GC 显然不是一个好的内存管理办法,它使内存频繁活动,带来了功耗。

        5 性能分析与实验数据 。

        比如纯 java 的 volanomark(专 目前针对 Java 平台有许多基准测试工具(Benchmark)门用于测试系统调度器和线程环境的综合性能,其建立一个模拟 Client/Server 方式的 Java聊天室,通过获取每秒平均发送的消息数来评测宿主机的综合性能)和 LMBench(评价系 ,本文通过构造一个累加计算来测试 Java 的复合对象统综合性能的多平台开源 benchmark)的性能。

        1测试代码和代数据: 定义一个 Java 复合类 JServer,通过ElastosClass(预先定义的 Annotaion)指明由构件Server.eco 中 CServer 类来实现的 compute 和 setProperty 方法,同时需要快速访问的属性 i和 count 放入构件实现的 C类中。

         ElastosClassModuleServer.eco ClassCServer class JServer native long compute native void setPropertyint i int count //int i //int count 定义一个 CAR 构件 Server.eco,其提供了 C类的 CServer。

         module interface IServer computeout Int64 o setPropertyinInt32 i1 inInt32 i2 class CServer interface IServer Java 复合类 JServer 中需要快速访问的属性 i 和 count 由构件 Server.eco 中 C类 CServer的类成员属性 CServer::i 和 CServer::count 实现: CarClassCServer public: CARAPI compute / out / Int64 pO CARAPI setProperty / in / Int32 i1 / in / Int32 i2 private: Int32 i Int32 count 构 件 Server.eco 中 的 C 类 CServer 以 类 成 员 函 数 CServer::compute 和CServer::setProperty 分别实现 Java 复合类 JServer 的 compute 和 setProperty 方法: ECode CServer::compute / out / Int64 pO Int64 result 0 forint j 0 j count j result i pO result return NOERROR ECode CServer::setProperty /in/Int32 i1 /inInt32 i2 i i1 count i2 2测试过程: 创建一个复合对象 JServer jObj new JServer 调用本地方法设置复合对象的属性 jObj.setProperty101000000 调用复合对象的 compute 方法 long l jObj.compute 通过正常的 Java 程序来完成同样的计算 long res 0 forint j 0 j 1000000 j //通过正常的 Java 程序来完成同样的计算 res 10 分别调用复合对象的方法实际上由 CAR 构件的函数实现和正常的 Java 程序来实现累加计算,之后比较运行结果和运行时间。

         通过 CAR 实现的计算时间为 185ms, 可以看到结果都正确, 快于正常 Java 实现的 677ms。

        3性能分析: C对对象属性的访问比 Java 更快的原因:1JVM 访问对象属性时字节码 IGET/SGET会先通过属性名字字符串去查 ClassObject 元数据中属性的偏移通过属性名字符串找到ClassObject 中 Field再取保存在 Field 中属性在对象中的偏移最后访问属性这是一个比较低效的步骤。

        而 C在编译的时候就已经计算出属性的偏移访问时直接进行。

        2C函数比Java 方法执行效率高,不用决议函数,直接跳转调用,而 Java 方法的调用需要一个方法Method 的决议需要查询相应类的元数据,之后再依次解释执行方法的字节码。

        6 结语 通过对Dalvik虚拟机改造,我们使得Java虚拟机支持复合对象机制。

        改造之后,用户可以设计能快速访问的复合类以及复合对象, 通过本地代码快速访问复合对象的快速属性,同时实现Java的本地方法调用,这样一来,Java虚拟机在效率上、速度上得到提升。

         目前依然存在一些不足,由于引入Elastos的构件系统,使得系统稳定性降低,当某个构件运行崩溃时,会造成整个运行时环境的崩溃。

        所以提高Elastos构件系统的稳定性将是今后工作的重点。

        参考文献1Dan Ingalls,Design Principles Behind Smalltalk,http://www.cs.virginia.edu/evans/cs655/readings/smalltalk.html2 The Smalltalk Collection Classes,http://www.cse.ogi.edu/class/cse529/slides/Lecture202/SmalltalkCollectionClasses.pdf3 周毅敏,陈榕,Dalvik虚拟机进程模型分析,计算机技术与发展,2010(2)4 The JavaTM Virtual Machine Specification,http://java.sun.com/docs/books/jvms/5 http://code.google.com/intl/en/android/Documentation.html 2007

    原创

    版权说明
    【设为主页】【加入收藏】【打印本文】【回到顶部】【关闭此页】
    •  相关文章 相关文章
      ·重庆市(工程)系列(正高)级专业技术职务
      ·中国成都人才市场为您提供“职称申报评定”
      ·工程技术期刊汇总
      ·实训基地建设可行性研究报告
      ·高职院校“校企共同体”机制的研究与实践
      ·基于汽车销售流程的《汽车及配件营销与管理
      ·BPA与PSS_E综合负荷模型的仿真研究
      ·高职院校辅导员激励机制研究
      ·精密锻造成形技术的应用情况及发展趋势
    •  最新文件 最新文件
  • 特别推荐