(通信与信息系统专业论文)基于arm926ejs的嵌入式java虚拟机的设计和性能优化.pdf_第1页
(通信与信息系统专业论文)基于arm926ejs的嵌入式java虚拟机的设计和性能优化.pdf_第2页
(通信与信息系统专业论文)基于arm926ejs的嵌入式java虚拟机的设计和性能优化.pdf_第3页
(通信与信息系统专业论文)基于arm926ejs的嵌入式java虚拟机的设计和性能优化.pdf_第4页
(通信与信息系统专业论文)基于arm926ejs的嵌入式java虚拟机的设计和性能优化.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

(通信与信息系统专业论文)基于arm926ejs的嵌入式java虚拟机的设计和性能优化.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

重庆邮电大学硕士论文摘要 摘要 随着3 g 时代的到来,无线通信和i n t e m e t 必将融为一体,成为一个崭新的无 线因特网。无线因特网应用最广泛、最典型的设备就是第三代移动通信终端。j a v a 语言由于其独特的平台无关性成为目前i n t e m e t 上非常流行的一种编程语言,对 j a v a 的支持己经成为第三代移动通信终端不可或缺的功能。但是按照传统方式实 现的j a 、,a 虚拟机效率低下,而市场对移动终端性能的要求在不断提高,国内外对 嵌入式j a v a 虚拟机性能优化的研究工作在近几年才开始发展。因此,对嵌入式 j a v a 虚拟机性能优化的研究工作己经成为当前计算机研究的一个热点。 论文指出了适合移动通信终端的嵌入式j a v a 虚拟机k v m 设计目标,即满足 兼容性、实时性、高性能和安全性。文章围绕设计目标展开讨论,并提供了相应 的手机参考设计解决方案。 论文着重探讨嵌入式j a v a 虚拟机性能优化的各种方法。包括消除公共表达式、 即时编译、预先编译等,并比较了现有方案的优劣。通过分析k v m 的执行引擎以 及结合a r m 9 2 6 e j s3 2 位硬件平台的特点,提出了以改进字节码、常用m e t h o d n a t i v e 化为基础,结合编译优化的性能优化方案。该方案适用于嵌入式系统,尤其 适用于移动通信终端。 垃圾回收过程g c 产生的停滞现象是影响k v m 实时性的最主要因素。本文利 用p e t r in e t 技术,通过建立离散并行计算机系统模型,对垃圾回收算法进行改进, 提高了系统的实时性。 文章最后详细介绍了将k v m 移植到第三代移动通信终端的过程,并通过测试 验证了移植的正确性以及与s u n 公司c l d c ( c o n n e c t e dl i m i t e dd e v i c e c o n f i g u r a t i o n ) 规格的兼容。文章对优化方案做了仿真验证和评估,结果表明优化 后的k v m 比c l d c 参考实现整体性能提高了2 0 以上。 关键词:j a v a 虚拟机,k v m ,执行引擎,a r m 9 2 6 e j s ,n u c l e u sp l u s a b s t r a c t a l o n gw i t ht h e3 ga g ea r r i v e d w i r e l e s sc o m m u n i c a t i o na n di n t e m e tw i l lc o m b i n e t o g e t h e rt ob e c o m eb r a n d n e ww i r e l e s si n t e m e t t h em o s tw i d e l ya n dt y p i c a le q u i p m e n t u s e di nt h ew i r e l e s s i n t e r n e ti st h e3 mg e n e r a t i o nm o b i l ec o m m u n i c a t i o nt e r m i n a l e q u i p m e n t ( t e ) j a v al a n g u a g ei sav e r yp o p u l a rl a n g u a g eo nt h ei n t e m e t a sj a v ap l a y sa h i g h l y i m p o r t a n t r o l ei nm o b i l ec o m m u n i c a t i o nm a r k e t ,m o r ea n dm o r ec e l l p h o n e m a n u f a c t u r e r sb e g i nt os u p p o r r tj 2 m ep l a t f o r m t h e r e f o r e ,s t u d y i n gt h ej v m p e r f o r m a n c eo p t i m i z a t i o nt e c h n i q u e ss u i t a b l e f o re m b e d d e de q u i p m e n tb e c o m e sa h o t s p o ti nr e c e n ta c a d e m i cr e s e a r c h i nt h i sa r t i c l e ,f i r s t ,w ei n t r o d u c e dt h ej a v al a n g u a g ea n dh i ss y s t e ma r c h i t e c t u r e t h e n ,w ea n a l y z e dt h em o d e l so fk v md e e p l yw h i c hi n c l u d ec l a s sl o a d i n gm o d e l , c l a s s v e r i f ym o d e l ,m e m o r ym a n a g e m e n ta n dg a r b a g e c o l l e c t m o d e l ,t h r e a d m a n a g e m e n tm o d e la n de x e c u t i n gm o d e l w ed i s c l o s e dj a v ai n t e r n a lr u n n i n gs y s t e m b yd e t a i l i n gt h em a i nf u n c t i o no ft h em o d e l s ,t h ee x e c u t ef l o w , a n dt h er e l a t i o ns h i po f t h em o d e l s t h i sa r t i c l ep o i n t so u tt h ed e s i g na i mo fk v mu s e di nt e t h a ti sc o m p a t i b l e 、 r e a l t i m e 、h i g hp e r f o r m a n c e 、s e c u r i t y t h ep a p e ri n t r o d u c e st h em e t h o d st oh e i g h t e nt h e p e r f o r m a n c eo f k v m ,f o re x a m p l e ,c l e a ru pc o m m o n a l i t ye x p r e s s i o n ,j i t ,a o ta n d s oo n b ys t u d y i n gt h ee x e c u t i n gm e c h a n i s ma n dt h ei d e n t i yo fa r m 9 2 6 e j - s ,w el o d g e as c h e m ew h i c hi ss u i tf o rt e t h i sa r t i c l e e m p h a t i c a l l y d i s c u s s e st h ev a r i e dm e t h o dt o o p t i m i z e t h e e m b e d d e dj a v av i r t u a lm a c h i n ep e r f o r m a n c e i n c l u d i n gt h ee l i m i n a t i n gp u b l i c e x p r e s s i o n ,j u s t i n t i m e ,a h e a d o f - t i m ea n ds oo n ,m o r e o v e r , c o m p a r i n gt h ef i ta n d u n f i to ft h ep r o j e c t t h r o u g ha n a l y z i n gt h ee x e c u t i o ne n g i n eo fk v m a n du n i f y i n gt h e c h a r a c t e r i s t i co ft h ea r m 9 2 6 e j - s3 2h a r d w a r ep l a t f o r m s ,i tp o i n t st h a tw ec a nb a s eo n i m p r o v i n gt h eb y t e c o d e sa n du s i n gm e t h o dn a t i v e dt os y n t h e s i st r a n s l a t ea n do p t i m i z e t h et y p es y s t e m ,e s p e c i a l l yt h ep l a nw h i c hi ss u i t a b l ef o rt h ee m b e d d e ds y s t e ma n d m o b i l ec o m m u n i c a t i o nt e r m i n a l s t a g n a n tp h e n o m e n o no ft r a s hr e c y c l i n gp r o c e s sg c i st h em o s tp r i m a r yf a c t o rw h i c ha f f e c t st h ek v m t i m e l i n e s s t h r o u g h t h ee s t a b l i s h m e n t s e p a r a t ep a r a l l e l m a c h i n es y s t e mm o d e l ,t h i sa r t i c l eu s e sp e t r in e tt e c h n o l o g yt o i m p r o v et r a s hr e c y c l i n ga l g o r i t h ma n de n h a n c et i m e l i n e s so ft h es y s t e m i i 重庆邮电大学硕十论文 摘要 i nt h el a s t ,t h ea r t i c l ei n t r o d u c e dt h ep r o c e s so ft r a n s p l a n t i n gk v m t ot h et h i r d g e n e r a t i o nm o b i l ec o m m u n i c a t i o nt e r m i n a l ,a n di th a sc o n f i r m e dt h et r a n s p l a n t a c c u r a c ya n dt h ec o m p a t i b i l i t yo fc l d c ( c o n n e c t e dl i m i t e dd e v i c ec o n f i g u r a t i o n ) s p e c i f i c a t i o nt h r o u g ht h et e s t t i l ca r t i c l em a k et h es i m u l a n tc o n f i r m a t i o na n dt h e a p p r a i s a lt oo p t i m i z ep l a n t h er e s u l ts h o w st h a tt h eo v e r a l lp e r f o r m a n c eo fk v mi s i n c r e a s e db y2 0 t h a nt h ec l d cr e f e r e n c e k e yw o r d s :j v m ,k v m , e x e c u t i o ne n g i n e ,a r m 9 2 6 e j - s ,n u c l e u sp l u s i i i 重庆邮电大学硕士论文第一章绪论 第一章绪论 无线通讯近几年来得到了突飞猛进的发展,已经成为世界上发展最快的技术 领域之一。无线通信改变了有线通信的局限性,给随时随地的信息交流提供了极 大便利。与此同时,i n t e m e t 也以全新的方式改变着人们的工作和生活。它的快速 崛起已经改变了现代计算机工业的整个图景。人们越来越依赖i n t e m e t 的信息,可 以预见,在不久的将来人们将通过i n t e m e t 完成诸如信息查询、电子购物、甚至家 用电器控制等功能。传统的p c 由于其体积大难以携带、成本价格高、操作复杂, 难以满足更多人对i n t e m e t 随时随地访问的要求,各种各样能够访问i n t e m e t 的嵌 入式设备应运而生,包括网络计算机、信息家电、智能电话、机顶盒等。随着3 ( 3 时代的到来,无线通信和i n t e m e t 必将融为一体,成为一个崭新的无线因特网。无 线因特网应用最广泛、最典型的设备就是第三代移动通信终端。全世界移动电话 的销量在2 0 0 7 年已经超过1 1 亿。 然而,从网络到c p u 再到操作系统,多种标准并存,多家厂商竞争。应用开 发商不得不面对多种硬件0 s 网络,痛苦的交叉开发过程和移植过程;电信运营商 缺乏有吸引力的增值服务;用户希望手机能够提供更多的智能服务、个性化的互 动服务等。在这种情况下,s u n 公司提出了基于消费类电子设备的嵌入式开发技 术j 2 m e ( j a v a2m i c r oe d i t i o n ) 。j 2 m e 和j 2 s e j 2 e e 使用相同的j a v a 语言,也 拥有j a v a2 技术的大多数特点:安全;与平台无关,代码完全可移植( 无需重新 编译) ;易于开发和维护等等。它为无线设备创造了一个开放式的软件平台,为新 一代无线因特网提供交互式的、安全的、更加丰富多彩的应用。对j 2 m e 的支持己 经成为第三代移动通信终端不可或缺的功能。但是按照传统方式实现的j a v a 虚拟 机效率低下,而市场对移动终端性能的要求在不断提高,国内外对嵌入式j a v a 虚 拟机性能优化的研究工作在近几年才开始发展。因此,对嵌入式j a v a 虚拟机性能 优化的研究工作己经成为当前计算机研究的一个热点。 本文的工作针对应用于第三代移动通信终端的j a v a 虚拟机展开。它从分析虚 拟机中的关键技术入手,对j a v a 虚拟机体系结构、实现规范、软件优化、移植实 现技术等方面进行了全面和深入的研究。 重庆邮电大学硕十论文 第一章绪论 1 1j a v a 技术概述 j a v a 语言是美国升阳计算机公司( s u nm i c r o s y s t e m s ,i n c ) 提出的一种针对 i n t e m e t 应用的面向对象语言。其实现的核心技术是j a v a 虚拟机。本节简要介绍j a v a 语言的发展历史和j 2 m e 的关键技术。 1 1 1j a v a 语言介绍 1 9 9 1 年s u nm i c r o s y s t e m si n c 的绿色计划( g r e e np r o j e c t ) 原本使用c ,c + + 来开发消费类电子产品,但是后来发现这些语言的功能和效果无法达到程序设计 师们的理想目标。为此他们开发了被称为o a k 的程序设计语言。1 9 9 4 年下半年, i n t e m e t 的迅猛发展使s u n 公司将o a k 重新以i n t e m e t 为目标进行了改进,并称为 j a v a 1 1 。1 9 9 5 年s u n 公司正式发布了j a v a 语言。根据s u n 公司的定义,j a v a 是 一种具有“简单、面向对象、分布式、解释型、健壮、安全、体系结构中立、可移 植、高性能、多线程、动态”等特性的语言 2 , 3 , 4 1 。 j a v a 按照使用领域主要分为3 大平台 5 , 6 1 : j 2 s e ( j a v a2p l a t f o r i l l ,s t a n d a r de d i t i o n ) :主要用于桌面应用软件的编程; j 2 e e ( j a v a2p l a t f o 咖, e n t e r p r i s ee d i t i o n ) :定义在服务器端j a v a 2 的企业 版,主要用于分布式的网络程序的开发,如电子商务网站和e r p 系统; j 2 m e ( j a v a2p l a t f o r i l l , m i c r oe d i t i o n ) :主要应用于嵌入式领域开发,如 机顶盒、手机或汽车导航系统。 1 1 2j 2 m e 的关键技术 资源受限的嵌入式系统平台,尤其是智能电话、p d a 等小型手持类设备,仅 具有有限的内存资源和有限的处理能力。这些局限性决定了它们无法支持完备的 j a 、,a 虚拟机和完整的j 2 s e j 2 m e 开发包1 7 , 8 1 。 目前j 2 m e 的环境分为c d c 和c l d c 两类,其中c l d c ( c o n n e c t e dl i m i t e d d e v i c ec o n f i g u r a t i o n ,有限连接设备配置) 是针对小型设备的配置环境。c l d c 定 义的是j a v a 包和类的最小集,同时还定义了一个功能缩减的j a v a 虚拟机kv i r t u a l m a c h i n e ( k v m ) 。在j 2 m e 开发中,仅有c l d c 提供的a p i 是远远不够的,因为 c l d c 不提供与用户、存储设备和网络的交互功能。开发人员需要用到提供这些功 能的简表( p r o f i l e ) ,即m i d p ( m o b i l ei n f o r m a t i o nd e v i c ep r o f i l e ,移动信息设备简 2 重庆邮电大学硕十论文 第一章绪论 表) 。m i d p 面向的是具有简单用户界面的小容量设备,其界面是一个某种带有输 入功能的小屏幕。 由于嵌入式设备在软硬件上的局限性,使得面向这些设备的c l d c 不可能支持 一个完整的j a v a 虚拟机。c l d c 的核心是kv i r t u a lm a c h i n e ( k v m ) 的虚拟机,它是 以低成本的移动设备为目标平台来设计的,这种设备通常仅仅有数十k ( k i l o b y t e ) 的内存容量。 c l d c 对硬件平台的最小需求为【9 ) : 为实现j v m 以及组成c l d c 平台的类库的持久存储,需要至少1 2 8 k b 的 r o m 或者闪存; 运行时至少需要3 2 k b 的易失性内存。这些内存用于满足j a v a 应用的动态 需求,其中包括类加载以及为对象和栈分配堆空间。 除了内存需求,c l d c 对设备平台的硬件环境几乎不做其他要求,比如不限制 人机界面和用户输入机制,对应用数据的本地存储也不做任何要求。对于软件环 境来说,c l d c 只要求设备提供操作系统来支持和管理虚拟机。j a v a 本身是多线 程编程语言,但它不要求操作系统支持多线程。虚拟机会通过调用本地功能来提 供虚拟的多线程环境。 m i d p ( m o b i l ei n f o r m a t i o nd e v i c ep r o f i l e ,移动信息设备简表) 位于c l d c 基础 之上,为开发者提供了应用程序模型、图形用户界面、数据持久性存储等功能, 目前最新的版本是m i d p2 0 ( j s rl1 8 ) b o a l l 。 1 2 研究背景和意义 1 2 1j a v a 虚拟机是嵌入式设备的重要选择 嵌入式系统是以应用为中心,以计算机技术为基础、软硬件均可裁剪,以适应 应用系统对功能、可靠性、成本、体积和功耗严格要求的专用计算机系统。 能够访问i n t e m e t 的嵌入式设备具有低功耗、低成本、高可靠等特点,并且能 支持j a v a 程序的运行1 1 2 1 。这是因为: j a v a 语言f 1 3 1 已经成为网页设计中不可缺少的部分。如果不能运行网页中的 a p p l e t 程序,浏览i n t e m e t 中的主页将发生很大的困难,而且不能使用许多 a p p l e t 中的数据库访问、加密等功能。 j a v a 语言已经成为许多分布式系统软件结构的基础,例如s u n 公司发布的 j a v a b e a n s ,j i n i 等。如果不能支持j a v a 语言将严重影响这些信息设备与其它 重庆邮电大学硕士论文第一章绪论 设备互通信、互操作的能力。 j a v a 语言可能会成为信息设备互连标准的基础。例如,在信息家电领域旱,同 时推出了三种规范。第一种是以s o n y 为首的日欧8 家i t 企业联合推出的面向 家庭网络的规范h a v i l o 版本。第二种规范是美国s u n 公司的分布式处理环境 j i n i 。第三种是微软公司发表的面向家庭网络连接的规范u p n p 提案。三种标 准中都不同程度地采用了j a v a 技术。 1 2 2j a v a 虚拟机存在性能缺陷 由虚拟机解释执行j a v a 字节码的工作方式保证了j a v a 的“w n t eo n c e ,r u n a n y w h e r e ”的移植性,却也使得j a v a 的运行速度大打折扣。完成同样的计算任务, j a v a 在解释执行时的性能只相当于c 语言的1 1 0 至1 2 0 0 4 , 1 5 1 。最近几年,随着 多种性能优化技术在j a v a 虚拟机中的应用,j a v a 应用的运行速度有了很大的提 高,j a v a 语言终于在服务器市场站稳了脚跟。然而嵌入式平台又给j a v a 应用提出 了新的问题。嵌入式设备,特别是移动通信类设备,一般只具备相当有限的计算 能力和存储能力,这些情况都大大制约了复杂的优化技术在嵌入式设备上的应用。 更为重要的,移动通信设备往往都只具备有限的电力供应,这又对优化技术提出 了更高的要求。 1 2 3j a v a 虚拟机在嵌入式领域的应用 j a v a 虚拟机在嵌入式领域具有广泛的应用。针对本文讨论的移动通信终端来 讲,当今市场上移动通信数据业务的应用主要有1 1 6 j : 短消息应用:包括短信收发、铃声下载、话费查询、新闻资讯、小区广播等服 务; 移动互连网业务:包括移动网络环境下的w w w 访问、w a p 访问、网络游戏、 电子邮件等等: g p s 定位服务:g p s 定位可以应用于紧急救援、车船导航、位置跟踪、定点内 容广播、移动黄页等服务项目上; 移动多媒体:如可视电话、网络电视等等; v p n 应用:企业集团用户可以构建自己的专用虚拟网络。 4 重庆邮电大学硕士论文第一章绪论 1 3 本文主要研究的内容 作为j a v a 的创始人,s u n 公司在2 0 0 0 年公布了j 2 m e m i d p 系统的参考实 现。现有的具备j 2 m e m i d p 支持的移动通信设备大多是基于该参考实现。该参 考实现采用解释执行字节码的j a v a 虚拟机,效率较低。市场对嵌入式j a v a 虚拟 机性能的要求在不断提高,而国内外对嵌入式j a v a 虚拟机性能优化的研究工作在 近几年才开始发展,因此,对嵌入式j a v a 虚拟机性能优化的研究工作将具有强大 的生命力和实用价值,是嵌入式领域的一个研究热点。 作者所在的实验室正在开发第三代移动通信终端,对j a v a2 0 的支持是终端设 计参考方案重要组成部分。本文旨在对基于手机终端的嵌入式j a v a 虚拟机进行前 期研究,主要包括嵌入式j a v a 虚拟机的运行机制、j 2 m e 的关键技术;性能优化方 法研究;j a v a 虚拟机在移动通信终端的移植实现方案。 1 4 本文的结构 本文共分为六章。 第一章:绪论。介绍了课题的研究背景,分析了j a v a 语言的历史和特点,简 要介绍j 2 m e 的关键技术,指出了本文的主要研究内容。 第二章:j a v a 虚拟机的体系结构研究。介绍了j a v a 虚拟机的体系结构,包括 虚拟机的加载、链接、执行过程以及垃圾回收机制。 第三章:嵌入式j a v a 虚拟机的优化。介绍了当前嵌入式j a v a 虚拟机的常用优 化方法并加以比较。 第四章:嵌入式j a v a 虚拟机的设计和实现。介绍了将c l d c m i d p 参考实现 移植到移动通信终端的实现过程,并提出了适用于移动通信终端的软件优化和实 时性改进方案。 第五章:移植效果和优化效果的测试和验证。 第六章:结束语。总结本课题研究的有关结论并提出了下一步工作的要点。 重庆邮电大学硕士论文第二章j a v a 虚拟机的体系结构 第二章j a v a 虚拟机的体系结构 j a v a 面向网络的核心就是j a v a 虚拟机,它支持j a v a 面向网络体系结构三大支 柱的所有方面:平台无关性、安全性和网络移动性。j a v a 虚拟机是一台抽象的计 算机,其规范定义了每个j a v a 虚拟机都必须实现的特性,但是为每个特定实现都 留下了很多选择。而且,它的规范本质上的灵活性保证上了它能在很广泛的计算 机和设备上得到实现。 本章对j a v a 虚拟机的体系结构和运行机制进行了研究分析。 2 1j a v a 虚拟机的简介 j a v a 的目标代码在执行时需要有j a v a 运行系统的支持,虽然j a v a 运行系统 被建立在各种不同的平台上,但为了支持j a v a 的可移植性,它们的功能要求是统 一的,为此j a v a 引入了j a v a 虚拟机( j a v av i r t u a lm a c h i n e ,简称为m ) 的概 念。可以理解为,j a v a 虚拟机是执行j a v a 语言的虚拟计算机,是经过j a v a 编 译器编译后的j a v a 语言与目标机之间的接口。它实际上是一组有关指令系统、字 节码格式等的规格说明,一般是在实际的硬件平台及操作系统平台上通过软件模 拟实现。j a v a 的运行平台架构如图2 1 所示。 a p p l e t sa n da p p li c a t i o n s j a v as t a n d a r de x t e n sio i l j a v ab a s ea p i a p i j a v as t a n d a r de x t e n s i o n j a v ab a s ec l a s s e s c 1 a s s e s j a v a 虚拟机 移植接口层 a d a p t e ra d a p t e r 浏览器 j a v ao s 操作系统 操作系统 硬件硬件 硬件 图2 1j a v a 平台结构 6 重庆邮电大学硕士论文第二章j a v a 虚拟机的体系结构 在j a v a 平台的结构图中,可以看出,j a v a 的整体架构主要由两个部分所构成, 即虚拟机( v i r t u a l m a c h i n e ) 和应用程序接e i ( a p i ) 。j a v a 虚拟机( j v m ) 处在核心的位 置,是程序与底层无关的关键。它的下方是移植接口,移植接口由两部分组成, 适配器和j a v a 操作系统,其中依赖于平台的部分称为适配器;j v m 通过移植接 口在具体的平台和操作系统上实现;在j v m 的上方是j a v a 的基本类库和扩展类 库以及它们的a p i ,利用j a v aa p i 编写的应用程序( a p p l i c a t i o n ) 和小程序( j a v a a p p l e t ) 可以在任何j a v a 平台上运行而无需考虑底层平台,就是因为有j a v a 虚拟 机( j v m ) 实现了程序与操作系统的分离,从而实现了j a v a 的平台无关性。由此, j v m 作为一个抽象层,屏蔽了不同硬件平台和操作系统的差异,保证了j a v a 程 序的可移植性。j a v a 虚拟机的主要任务是装载c l a s s 文件并且执行其中的字节码。 j a v a 虚拟机包含一个类装载器( d a s s l o d a e r ) ,它可以从程序和a p i 中装载c l a s s 文件。 字节码由执行引擎执行【1 7 】。 2 2j a v a 程序运行机制 2 2 1 执行环境 运行中的每一个j a v a 程序实际上都是在j v m 的一个实例中运行的,并且每个 运行程序都有其自身的j v m 实例。前面介绍到j a v a 使用称为字节码的解释型源码, 本章将介绍j v m 将j a v a 编程语言编写的指令代码转换成底层操作系统能够识别的 过程。j v m 规范中定义了该转换过程的内部抽象架构。 由j v m 加载类文件( 经过编译的j a v a 文件扩展名为c l a s s ,称为类文件) 并用执 行引擎来执行。执行字节码时,m 通过本地方法与底层操作系统相互通信,由 于使用了这种本地方法的实现,因此特定的m 实现与指定的平台相关【5 1 。 2 2 2 运行时数据区 除了上节提到的这些组件外,j v m 还需要内存来存储代码执行中的相关临时 数据,如局部变量、执行的方法等。这些数据都存放在j v m 的运行时数据区中。 堆 堆是一个自由内存区域,常用于内存的动态分配或临时分配。堆是一种运行 时数据区,为类和数组对象提供内存。m 在启动时创建堆,然后当j a v a 中创建 类或数组对象时,就从堆中分配所需内存。当对象或数组不再存在后,由一个称 7 重庆邮电火学硕士论文 第二章j a v a 虚拟机的体系结构 为垃圾收集的自动存储管理系统来回收堆内存,本文2 5 节将会详细介绍该系统。 j v m 规范中未指明堆的实现方式,以便创造各种不同的j v m 实现。堆的尺寸 可以是固定不变的,也可以在需要时增大或在当前尺寸过大时减小。堆内存并不 一定是连续的。如果堆内存用完,并且无法为堆分配额外的内存,系统就会产生 o u t o f m e m o r y e r r o r 异常【1 9 i 。 栈 j a v a 的栈帧用于存储方法调用的状态。栈帧中存储了数据和部分结果,以及 方法的执行环境、方法调用所需的所有局部变量和方法的操作数栈。操作数栈中 存储着大部分字节码指令的参数和返回值。执行环境中则包含了指向方法调用的 指针。 帧是构成j v m 栈的组件。帧中存储了部分结果、数据和方法的返回值,帧还 用于动态链接以及抛出运行时异常。调用方法时就会创建一个帧,而一旦该方法 结束,该帧也会销毁。帧中包含有一组局部变量、操作数栈以及对当前方法所在 类的运行时常量池的引用。 在j v m 运行j a v a 代码的任意时刻,j v m 中只有对应当前执行方法的帧是活 动的。该帧称为当前帧,所代表的方法就是当前方法,而包含该方法的类则为当 前类。当线程调用一个方法时( 每个线程都有其自身的栈) ,j v m 也会创建一个新帧, 使该帧成为当前帧,并压到该线程的栈中。 与堆一样,j v m 规范把栈帧的实现方式留到具体的j v m 实现方式中。栈的尺 寸可以固定,也可以根据需求扩大或缩小。程序员能够控制栈的初始化尺寸和最 大、最小尺寸 2 0 1 。 方法区 方法区是由所有j v m 线程共享的一个公共存储区。该存储区常用于存储运行 时常量池、方法数据、字段数据以及方法和构造函数的对应字节码。j v m 规范仅 仅描述了方法区的一般特性,并未规定该区域的位置,也没有指明该区域的实现 方式。方法区的尺寸可以固定,也可以扩大或缩小。程序员能够指定方法区的初 始尺寸,并且该区域不必是连续的。 寄存器 j v m 中的寄存器与其他计算机系统中的寄存器类似,用于反映虚拟机的当前 状态。寄存器会在字节码执行时更新。其中,主寄存器是程序计数器( p c 寄存器) , 用于指示j v m 当前执行指令的地址。如果当前执行的是本地方法( 用非j a v a 语言 编写的方法) ,则p c 寄存器的值不定。m 中的其他寄存器包括指向当前方法的 执行环境的指针、指向当前执行方法的第一个局部变量的指针、以及指向操作数 栈顶的指针。 8 重庆邮电大学硕士论文 第二章j a v a 虚拟机的体系结构 运行时常量池 运行时常量池相当于其他编程语言中所用的符号表。顾名思义,常量池中包 含的是数值文字和字段常量。每个运行时常量池的内存是从方法区中分配的, j v m 为类或接口加载类文件时会构造一个运行时常量池。 2 3 加载、链接和初始化 类文件要首先被装载到k v m 的内存空间,通过l i n k 和i n i t i a l i z e 处理后,转 换成运行时状态,才能被k v m 执行。本节详细分析这一过程。 2 3 1 类加载 加载过程是类加载器查找类文件并将其装入内存【2 1 1 。k v m 获得类文件的途径 有:从i n t e r n e t 中获得,从分布式系统中共享设备获得,从本身设备的r o m 或f l a s h 中获得。 类加载器一般有两种类型:由j v m 提供的引导类系统加载器( b o o t s t r a pc l a s s l o a d e r ) 和用户定义的类加载器。 使用默认引导类加载器的加载过程如下:根据所要加载的类文件,引导类加 载器会判断自身是否已经成为该类的启动加载器。如果是,则c l a s s 对象存在,加 载器停止。如果类还没有加载,则加载器会搜索对应的类文件,并在找到后根据 该类文件创建c l a s s 对象。如果找不到类文件,那么就会产生n o c l a s s d e f f o u n d e r r o r 异常。使用用户定义类加载器时,整个加载过程稍有不同。与引导加载器一样, 用户定义的加载器首先判断自身是否已经成为目标类文件的启动加载器。如果是, 则c l a s s 对象已经存在,加载器停止,而如果不是,用户定义的加载器会调用 l o a d c l a s s ( ) 方法。 在k v m 中只有系统加载器,用于k v m 所需的系统类库通常采用r o m i n g 技 术,预先固化在r o m 中以节省下载时间。即k v m 的加载器主要用来下载应用程 序中的类文件。 2 3 2 链接 链接过程是将类文件转换为可以使用的形式,并存放在内存中。链接分为3 个子过程:校验、准备和解析。 由于j v m 与j a v a 编译器是完全分离的,因此,用来解释类文件的m 无法 9 重庆邮电人学硕士论文第二章j a v a 虚拟机的体系结构 保证类文件的形式正确,甚至无法保证该文件确实由j a v a 编译器所生成。另一个 问题在于继承与类兼容性。如果给定类文件所表示的类继承自另一个类文件表示 的父类,那么j v m 必须确保该子类的类文件与父类的类文件兼容。 j v m 会校验每个类文件是否满足j a v a 语言规范对类文件的约束,不过j a v a 类校验器与j a v a 语言无关。用某些其他语言编写的程序同样也能编译成类文件格 式,编译之后,该类文件也能通过校验过程。在校验类文件之后,j v m 准备初始 化类,包括为类变量分配内存空间并设置为默认初始值。这些值是标准的默认值, 例如i n t 类型为0 ,b o o l e a n 类型为f a l s e 等。在初始化阶段,这些值会设为程序相 关的默认值。 在解析这一可选步骤中,j v m 把运行时常量池中引用的符号解析成具体值【2 。 2 3 3 初始化 初始化( i n i t i a l i z a t i o n ) 是通过执行初始化代码对类变量和对象变量设置初始 化值的过程【2 0 1 。链接完成后,会调用静态字段和静态初始化器。静态字段的值即 使在类没有实例化时也能够访问得到,而静态初始化器用于单个表达式无法表示 的静态初始化。j v m 把所有这类初始化器收集到一个特殊的方法中。例如,类所 有初始化器的集合就是初始化方法 。 不过,j v m 在初始化一个类时不仅需要调用该类的初始化方法,而且需要初 始化所有的父类。结果就是,总是需要最先初始化o b j e c t 类。另外,包含应用程 序m a i n ( ) 方法的类总是要初始化。 完成初始化之后,类文件已经处于可用状态。下一步应进行类的实例化,即生 成对象。k v m 对对象的处理和对类的处理类似,对象的初始化代码放在 方 法中。 2 4 字节码执行机制 类文件中的字节码由一系列单字节操作码指令构成,操作码指定所要执行的 操作。操作码可以带有任意个数的操作数,操作数是该操作所用的参数或数据。 j v m 解释程序本质上使用d o w h i l e 循环来加载每一个操作码以及所有相关操作 数,然后执行操作码所表示的任务。字节码根据j v m 指令集转换成操作,j v m 指 令集将字节码对应于j v m 规范指定的相应操作。该过程一直进行到解释完所有操 作码为止。 出于紧凑原因( 但使性能稍有下降) ,j v m 操作码采用单字节实体【2 0 2 1 1 。使用 l o 重庆邮电大学硕士论文第二章j a v a 虚拟机的体系结构 单字节操作码能够最小化j v m 指令集的长度。超过1 个字节大小的数据在运行时 用多个单字节实体来构造。j v m 指令集的第一组指令包括对基本数据类型和对象 的基本操作。指令使用的命名形式通常是数据类型加操作。例如,i l o a d 指令表示 将一个i n t 类型的局部变量加载到操作数栈中,而f l o a d 指令则是将一个f l o a t 类型 变量加载到操作数栈中,依次类推。这一组指令的功能还包括将操作数栈中的特 定数据类型存储到一个局部变量中、将一个常量加载到操作数栈中、以及访问多 个局部变量。第二组指令涉及到算术运算,算术运算通常会用到当前操作数栈中 的两个值,并将运算结果放入操作数栈。命名法与之前相同,例如i a d d 操作是将 两个整型值相加,d a d d 操作则是将两个双精度型值相加。 类似地,还有一些操作表示基本的数学函数( 加、减、乘、除) ,另一些操作表 示逻辑运算( 按位或、按位与、按位非) 和一些特殊功能,包括求余、取反、移位、 递增和比较。 j v m 的浮点数运算和向零舍入运算遵循i e e e7 5 4 标准【2 7 j 。某些整型运算( 如 被零除) 会引发a r i t h m e t i c e x c e p t i o n 异常,但浮点运算符不会引发运行时异常,而 是在出现溢出情况时,返回n a n ( n o tan u m b e r ,无效数学运算的结果) 。 m 指令集中还包含不同类型之间的转换操作。j v m 支持加宽转换,例如f l o a t 类型转换为d o u b l e 类型。转换指令的命名是前一类型加上2 再加上后一类型。例 如,i 2 l 指令是i n t 类型向l o n g 类型的转换。指令集中还包含了一些变窄操作,如 i n t 类型向c h a r 类型的转换。这类操作的命名形式与加宽转换的命名法相同。 类与数组对象的创建和操作也存在相应的指令。n e w 指令用于创建一个新的 类对象,n e w a r r a y 、a n e w a r r a y 和m u l t i l i n e a r r a y 指令分别用来创建相应的数组对象。 还存在相应的指令用于访问类的静态变量和实例变量、将数组组件加载到操作数 栈中、从操作数栈中取值并存储到数组组件中、返回数组长度以及检查类对象或 数组的特定属性。 j v m 指令集中为方法调用提供了i n v o k e v i r t u a l 、i n v o k e i n t e r f a c e 、i n v o k e s p e c i a l 和i n v o k e s t a t i c 指令,其中i n v o k e v i r t u a l 为普通的方法调度模式。另外3 个指令分 别用于调用接口方法、调用要求特殊处理的方法,如私有方法或父类方法、以及 调用静态方法。j v m 为每一种数据类型都定义了方法的返回指令。 最后,还有一些指令用于其他各种操作,包括操作数栈管理、传输控制、异 常抛出、f i n a l l y 关键字的实现以及同步。 2 5 垃圾回收机制 j a v a 中使用称为垃圾收集器的技术来监视j a v a 程序的运行,当对象不再使用 重庆邮电大学硕十论文第二章j a v a 虚拟机的体系结构 时,就自动释放对象所使用的内存 2 3 2 4 1 。j a v a 使用一系列软指针来跟踪对象的各个 引用,并用一个对象表将这些软指针映射为对象的引用。之所以称为软指针,是 因为这些指针并不直接指向对象,而是指向对象的引用。使用软指针,j a v a 的垃 圾收集器能够以单独的线程在后台运行,并依次检查每个对象。通过更改对象表 项,垃圾收集器可以标记对象、移除对象、移动对象或检查对象。垃圾收集器是 自动运行的,一般情况下无需显式地请求垃圾收集器。程序运行时,垃圾收集器 会不时检查对象的各个引用,并回收无引用对象所占用的内存。调用s y s t e m 类中 的静态g c 0 方法可以运行垃圾收集器,但这样并不能保证立即回收指定对象。 j a v a 程序员

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论