基于Linux网络计算机Java虚拟机性能优化.docVIP

基于Linux网络计算机Java虚拟机性能优化.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Linux网络计算机Java虚拟机性能优化

基于Linux网络计算机Java虚拟机性能优化   摘要:目前,Linux网络计算机中的Java虚拟机在运行Java应用程序时,存在着执行性能较低的问题。该文实现一种优化方案:在Kaffe虚拟机中应用并改良直接线索式解释器优化技术。旨在兼顾Linux NC现有的硬件配置和软件模式,有效地提升Java虚拟机运行效率,并保证较低的CPU和内存成本。从而改善虚拟机的性能表现。   关键词:Linux;NC;Kaffe;Java虚拟机;性能优化      NC(Network Computer)是网络计算体系结构演变的必然结果。NC系统软件包括两大部分:运行在NC上的NCOS和运行在应用服务器上的NCServer。Java虚拟机(Java Virtual Machine)是两大部分的重要组件,其设计、实现技术将影响Java应用程序执行的实际效果及NC中其它服务的性能表现。      1 网络计算机中JVM的性能表现      目前,随着多种性能优化技术在JVM中的应用,Java在桌面操作系统及服务器中的运行效率有了很大程度的提高。但嵌入式领域的JVM性能的研发工作却滞留在起步阶段。Linux NC应用的是桌面OS的JVM。虽然这种JVM的优化技术大大提高了Java的执行性能,但嵌入式设备NC的计算及存储能力却难以负担这种JVM的技术对CPU、内存的较高要求。      2 基于Linux NC的JVM性能优化方案      Linux成为继Windows CE之后,第2个应用于NC的主流操作系统。因此,本文的优化工作将基于Linux平台。   2.1优化对象   源代码开放的软件包Kaffe是一个优秀的Java语言环境。优化方案选择Kaffe作为优化对象,主要基于4个原因:Kaffe是基于类Unix系统上开发的,特别是Linux和Free BSD。因此,把Kaffe移植到支持POSIX原语的体系结构比其它体系结构容易;Kaffe是一个完整的遵从Personal Java 1.1规范的Java语言环境,可以应用于各种因特网设备、嵌入式系统;Kaffe的解释器采用switch-case模式,性能相对较低;Kaffe基于模块实现,具有伸缩性和高效性。   2.2 技术选择   鉴于上述优化技术的特点,作者分析得出编译执行技术与NC的不适用性,主要表现在:   在800MHz工作频率,32位的总线宽度的CPU下,编译执行的Java程序会呈现较明显的停滞现象;   NC的CPU Cache容量难以容纳全部的核心代码,使得CPU访问内存的机率增加,JVM的执行效率降低;   编译产生的机器代码量是原字节码的几倍到几十倍,NC的内存和CPU Cache难以承受。   因此,解释执行技术更适合Linux终端设备。由于:   解释执行的JVM占用较小的ROM;字节码占用较小内存空间,减轻了对数据Cache的压力;解释方式运行的JVM的核心代码量较小,增加了在指令Cache中的比例。   2.3方案设计   根据以上分析结论,及解释技术的优化技术在嵌入式移动通信领域的应用良好的现状,本文采用解释执行技术及其优化手段设计优化方案。   DTI工作机制:转化函数对应一个translated code数组,函数按顺序读入字节码指令,查找其解释程序入口地址,将地址保存在对应的数组中。即原来的操作码对应转化为解释程序的标号地址。   技术的改良。为了节省DTI中translated code数组的空间,方案对数组进行了合理的压缩。   合并操作数。在32位CPU中,标号地址长度占用4B的存储器。操作码后的操作数长度从0B到数10B不等。原来16位和32位的操作数分别占用2B,2个字节码单元和4B,4个字节码单元。合并后,它们均占用1个translated code数组单元。   处理跳转地址。操作数的合并引起了操作码对应偏移量的变化,因此,需要更新绝对和相对跳转指令的目标地址。方案引入tcbc_offset数组,令其保存translated code数组相对于原字节码数组的偏移量的差值(带符号)。当修改跳转目标地址时,利用该数组的值分别计算绝对和相对跳转指令的新目标地址。同时,方案通过3个优化途径进一步提升DTI的优化   幅度:   ①《Java虚拟机规范》只定义了202条指令,其余的可由用户自定义,即伪指令。   第1类伪指令:用指定数据类型的伪指令替代不指定操作数类型的指令。省去遍历各种类型常量池的操作。如:ldc指令把常量池中的项压入Java栈。伪指令intldc,floatldc,stringldc指定具体的数据类型。在转化字节码的过程中,根据常量的数据类型,对应到伪指令,直接指向某个类型的常

您可能关注的文档

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档