考试网 >> IT认证 >> JAVA >> JAVA指导 >> 64位环境中的Java

64位环境中的Java

发布时间:2006-06-28 10:36     点击:
分页:上一页  1 2 3 [4] 5 6  下一页

编译器和优化器

  为了实现快速启动,许多JVM选择在开始时首先解释Java字节码,在随后运行时再对这些字节码进行编译。然而,JRockit首先使用JIT(Just In Time)编译器编译代码。虽然启动时间稍长,但这样可以使应用程序能够从一开始就提高性能。为了实现快速启动,WebLogic JRockit不使用所有可能的编译器优化。虽然使用所有编译器优化可能会在应用程序执行的初始阶段获得较高性能,但在启动时间上的额外延长也被认为是不必要的。

  从应用程序性能的角度考虑,使用所有优化去编译所有方法也是不必要的,因为编译时间也是应用程序执行时间的一部分。因此,不仅WebLogic JRockit不会在启动时完全优化所有方法,而且在整个应用程序运行期间,也会保留大量的方法不被优化。WebLogic JRockit仅选择改进后能够最大限度地提高应用程序性能的函数,然后仅对这一少部分方法进行优化。

  WebLogic JRockit有两个各不相同但可以协同操作的代码生成器:JIT编译器和优化编译器。如图1所示。大多数方法只能遍历图表的左半边。某些选择方法将会利用优化编译器。



图1. BEA WebLogic JRockit有两条代码编译途径。

  WebLogic JRockit使用尖端的、低开销的、基于采样的技术来识别应该优化的函数。JVM包含一个采样器线程,该线程以周期性间隔唤醒,并检查几个应用程序线程的状态。它会识别每个线程正在执行什么方法,并记录某些执行历史纪录。采样器线程为所有方法跟踪此信息,当它发现频繁使用某一方法时,就会打上标记以便进行优化。在应用程序运行期间,较早的阶段会有大量这种优化机会,随着应用程序的继续执行,优化机会出现的速率不断下降。

  由于方法的大小通常很小,而范围对代码调度程序非常重要,因此内嵌方法的优化是最重要的。调用方法的代码直接在调用点插入。在Java中,这可能很难完成,原因有很多,如在执行期间开始前,接口调用、远程调用和虚拟调用中被调用函数的标识未知。WebLogic JRockit拥有现成的技术,能够解决一部分问题。如果完成情况很差,则内嵌方法可能会导致代码膨胀,进而造成性能急剧下降。WebLogic JRockit包含精心调试过的启发式,可以防止这种性能下降。

分页:上一页  1 2 3 [4] 5 6  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有