首页> 中国专利> 用于在爪哇程序中缩短字节代码的编译时间的系统和方法

用于在爪哇程序中缩短字节代码的编译时间的系统和方法

摘要

提供了一种系统和方法,其中当执行Java程序时,频繁使用的字节代码被编译为对应的本机代码,并且存储所得的本机代码,因而当将来执行该Java程序时,相关字节代码的本机代码就能被重新获得和执行,因此缩短了通过对该字节代码进行编译以产生本机代码所需的时间。

著录项

  • 公开/公告号CN1525321A

    专利类型发明专利

  • 公开/公告日2004-09-01

    原文格式PDF

  • 申请/专利权人 三星电子株式会社;

    申请/专利号CN200410002968.4

  • 发明设计人 朴正圭;宋孝晶;

    申请日2004-01-21

  • 分类号G06F9/45;

  • 代理机构11105 北京市柳沈律师事务所;

  • 代理人邵亚丽;马莹

  • 地址 韩国京畿道

  • 入库时间 2023-12-17 15:30:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-03-30

    未缴年费专利权终止 IPC(主分类):G06F9/45 授权公告日:20060621 终止日期:20100221 申请日:20040121

    专利权的终止

  • 2006-06-21

    授权

    授权

  • 2004-11-10

    实质审查的生效

    实质审查的生效

  • 2004-09-01

    公开

    公开

说明书

本发明要求于2003年2月24日在韩国知识产权局提交的韩国专利申请No.10-2003-0011366的优先权,其公开内容全部引用于此作为参考。

                        技术领域

本发明涉及一种用于在Java(爪哇)程序中缩短字节代码的编译时间的系统和方法,特别涉及一种用于在Java程序中缩短字节代码的编译时间的系统和方法,其中当执行Java程序时频繁使用的字节代码就被编译,并且当在将来使用到该Java程序时,所得的本机代码就被重新得到并运行,因而缩短了该本机代码的编译时间。

                        背景技术

一般来讲,由Java程序源代码的编译过程产生的字节代码是由Java虚拟机(JVM)执行的。最近,为了增强Java虚拟机的执行速度,用CPU将字节代码解译为可直接运行的本机代码的方法已经被广泛地使用。

在这些方法中,在动态自适应编译(DAC)中,字节代码被解译而那些被频繁使用的、被分类为瓶颈字节代码的字节代码,被编译为本机代码以执行。即,DAC方法只将频繁使用的字节代码编译为本机代码,而不是程序中的所有字节代码。

然而,这里的问题是,一旦缺少内存,在字节代码执行期间所产生的本机代码就会被垃圾收集器收集,而且,由于在Java程序被完全运行以后所有的本机代码都被删除,而不能在将来的执行中再次使用。

因为大部分曾经被编译为本机代码的字节代码倾向于为将来的运行而被重复编译,这里的问题是删除本机代码导致了在将来的运行中所用的本机代码的重复产生。因此,在譬如具有低性能CPU和低容量电池的移动终端的系统中,传统方法的问题在于系统的响应时间增加和电池迅速地消耗。

                        发明内容

本发明就是用来解决上述问题的。本发明的一个目的是提供一种用于在Java程序中缩短字节代码的编译时间的系统和方法,其中当运行Java程序时对频繁使用的相关字节代码进行编译,并且所得本机代码被存储,因而,当将来运行该Java程序,时相关字节代码的本机代码就能被重新获得和执行。

本发明的另一个目的是提供一种用于在Java程序中缩短字节代码的编译时间的系统和方法,缩短了在具有低性能CPU和低容量电池的设备中Java程序的编译时间和执行时间,因此减少了对用户的响应时间并保存了电池能量。

根据本发明的一个示例方面,为了达到上述目的,提供了一种用于在Java程序中缩短字节代码的编译时间的系统,该系统包括:类装载器单元,用于装载通过编译Java程序源代码所产生的字节代码;第一存储器单元,用于在可访问状态下保持由类装载器单元装载的字节代码和通过编译该字节代码所产生的本机代码;第二存储器单元,用于在可访问状态下存储装载在第一存储器单元中的本机代码;本机代码管理器单元,用于根据类装载器单元的请求,搜索存储在第二存储器单元中的本机代码,并将搜索到的本机代码装载在第一存储器单元中;以及执行单元,用于在可访问状态下执行装载在第一存储器单元中的本机代码。

另外,根据本发明的另一个示例方面,提供了一种用于在Java程序中缩短字节代码的编译时间的方法,该方法包括步骤:由类装载器单元装载编译的字节代码;请求本机代码管理器单元搜索对应于装载的字节代码的本机代码;在第二存储器单元中搜索请求的本机代码;将搜索到的本机代码发送到第一存储器单元;以及,由代码执行单元执行发送的本机代码。

                        附图说明

通过对下面结合了附图的说明性、非限定实施例的说明,本发明的以上和其它目的和特征将变得更加清楚,其中:

图1是示意地说明用于在Java程序中缩短字节代码的编译时间的示例系统的方框图;以及

图2是示意地说明用于在Java程序中缩短字节代码的编译时间的示例方法的流程图。

                      具体实施方式

下面,将结合附图对本发明的说明性、非限定实施例进行详细的说明。

图1是示意地说明用于在Java程序中缩短字节代码的编译时间的示例系统的方框图。该系统包括:类装载单元100;第一存储器单元200;本机代码管理器单元300;第二存储器单元400;执行单元500和垃圾收集单元600。

类装载器单元100装载通过编译Java程序源代码产生的字节代码。这里,最初位于辅助存储器单元中的字节代码被装载在Java虚拟机中。

第一存储器单元200在可访问状态下保持由类装载器单元100装载的字节代码和通过编译该字节代码所产生的本机代码。即,由类装载器单元100装载的字节代码和通过编译该字节代码所产生的本机代码被存储在预定的存储区域,所以随后描述的执行单元500能够访问存储的本机代码。

第二存储器单元400在可访问状态下存储装载在第一存储器单元200中的本机代码。

本机代码管理器单元300将已经存储在第一存储器单元200中的本机代码存储到第二存储器单元400。本机代码管理器单元300根据类装载器单元100的请求搜索存储在第二存储器单元400中的本机代码,并将搜索到的本机代码装载在第一存储器单元200中。本机代码管理器单元300通过使用最近最少使用的(least recently used,LRU)方法管理存储在第二存储器单元400的本机代码。在LRU方法中,在存储的本机代码中很少使用的本机代码按照它们罕有使用的顺序被检验并删除。这里,很少使用的本机代码被删除,例如基于当它们被存储时的存储大小和时间。

执行单元500在可访问的状态下运行装载在第一存储器单元200中的本机代码和字节代码,执行单元500包括:字节解译器510;运行时间解析器520;本机代码编译器530和本机代码执行器540。

字节代码解译器510在可访问的状态下对装载在第一存储器单元200中的字节代码进行解译并执行解译的字节代码。

运行时间解析器520检验由字节代码解译器510解译的字节代码是否是频繁使用的字节代码,并将检验结果报告给本机代码编译器530。本机代码编译器530通过对解译的字节代码进行编译产生本机代码。此外,如果运行时间解析器520确认该字节代码是频繁使用的字节代码,则本机代码编译器530将编译的本机代码装载在第一存储器单元200中。

本机代码运行器540执行由本机代码管理器单元300装载在第一存储器单元中的本机代码。

垃圾收集单元600在第一存储器单元200中自动地收集被不用的代码占用的空间以在第一存储器单元200中获得更多的空间。如果即使在垃圾收集单元600收集了被不用的代码占用的空间之后在第一存储器单元200中还是发生了空间短缺,垃圾收集单元600请求本机代码管理单元300将本机代码存储到第二存储器单元400中。

图2是根据本发明的示意地说明用于在Java程序中缩短字节代码的编译时间的示例方法的流程图。

首先,类装载器单元100装载由编译Java程序源代码所产生的字节代码(S100)并请求本机代码管理器单元300搜索对应装载的字节代码的本机代码(S110)。然后,本机代码管理器单元300在第二存储器单元400中搜索请求的本机代码(S120)。

当在第二存储器单元400中找到对应的本机代码时(S130),搜索到的本机代码发送到第一存储器单元200(S132)。然后,本机代码运行器540运行发送到第一存储器单元200的本机代码(S134)。这里,存储在第二存储器单元400中的本机代码就是在Java程序中通过对频繁使用的字节代码进行编译所产生的本机代码。

在本发明,存储在第二存储器单元400中的本机代码仅仅是被装载在第一存储器单元中并在第一存储器单元中执行。因此,这样的优点就是不必每次都对频繁使用的字节代码进行解译,因而除去了字节解译过程。

同时,如果由本机代码管理器单元在第二存储器单元400中进行搜索的结果是没有对应相关字节代码的本机代码,则类装载器单元100发送装载的字节代码到第一存储器单元200(S140)。

当字节代码被装载在第一存储器单元200中时,字节代码解译器510对装载的字节代码进行解译以便执行(S150)。

在字节代码解译器510解译字节代码的同时,运行时间解析器520检验解译的字节代码是否是频繁使用的字节代码(S160)。然后,检验结果被发送到本机代码编译器530。

如果确定检验过程的结果是字节代码是频繁使用的字节代码(S170),解译的字节代码被发送到本机代码编译器530并进行编译以产生对应的本机代码(S172)。这里,本机代码被发送到第一存储器单元200然后由本机代码管理器单元300存储在第二存储器单元400中(S174)。此时,存储在第二存储器单元400中的本机代码由本机代码管理器单元300根据LRU方法进行管理。即,由于第二存储器单元400存储区域的限制,使用LRU方法来管理存储的本机代码。

然而,不是频繁使用的或在以前已经被定义为不用的字节代码,则将由字节腹面解译器510进行解译以便运行(S180)。

垃圾收集单元600在第一存储器单元200中自动地收集被不用的代码占用的空间以在第一存储器单元200中获得更多的空间。另外,如果即使在处理了不用的代码之后第一存储器单元200还是缺乏空间,本机代码管理单元300被请求存储已经装载在第一存储器单元200中的本机代码,因此在第一存储器单元200中获得了更多的空间。

根据本发明,当运行Java程序时,频繁使用的相关字节代码就被编译并被存储,因而,当将来运行该Java程序时,相关字节代码的本机代码就被重新得到并运行。因此,这里的优点就是缩短了通过编译字节代码产生本机代码所需的时间。

此外,这里的优点就是在具有低性能CPU和低容量电池的譬如蜂窝电话的设备中缩短了Java程序的编译时间和运行时间,因此减少了对用户的响应时间并保存了电池能量。

已经结合在附图中所示的并仅仅是本发明的例子的说明性、非限定实施例,对本发明进行了说明。本领域的技术人员能够理解,在不脱离权利要求书所定义的本发明的范围和精神的情况下,可以对其进行各种变化和改动。因此,实施例的简单改动应当属于本发明的范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号