Java HotSpot性能引擎的体系结构(2)

人们对Java平台感兴趣的一个主要原因是:基于Java技术的程序与用传统语言编写的程序不同,它们是以一种可移植的和安全的形式而分布的。过去,使用可移植的分布形式一般来说都意味着在程序执行中的性能要下降。通过采用现代动态编译技术,这种性能的下降得以减缓,其本质可说是"双收其利"。
举一个简单但很重要的例子:我们可以使一个Java技术编译器为特定版本的处理器"在运行中"生成优化的机器码(例如,尽管奔腾和奔腾II处理器可以运行相同的机器码,但没有一种形式的机器码可以同时对上述二者都是优化的)。于是,Java编程语言的字节码分布形式不仅可以提供移植性,而且实际上还可以为性能的提高提供新的机会。
本文将介绍Java的第二代性能技术--JavaHotSpot性能引擎。Java HotSpot性能引擎几乎在其设计的每一个领域都有创新,它使用了广泛的可用来提高性能的技术;这包括可检测并加速性能关键性(performance-critical)代码"在运行中"的适配性优化技术。Java HotSpot还提供了超快速(ultra-fast)线程同步,以获取线程安全的基于Java技术的程序的最大性能;它还提供了垃圾回收器(GC),GC不仅特别快,而且是完全"精确"的(因而也更可靠);另外,采用最新技术的算法也减少或消除了用户对垃圾回收而引起的暂停的感觉。最后,由于Java HotSpot性能引擎在源代码级是以一种简洁、高级的面向对象的设计风格编写的,因而还进一步改善了维护性和扩展性。
2. 概述
下面是Java HotSpot性能引擎的主要结构性优势:
1) 更好的一般性能

  • 无句柄对象(为提高速度,对象的引用被实现为直接指针);
  • 更快的Java编程语言的线程同步;
  • 为达到更快的C代码的调出和调入,C和Java代码可共享相同的激活栈;
  • 与及时编译JIT相比较,大大减小了代码空间和启动时间总开销。

2) 最利于繁殖的(best-of-breed)性能

  • 为获得真本地代码性能,优化了本地代码编译器;
  • 适配性的"热点(Hot Spot)"检测主要集中于性能-关键性代码的优化上,从而大大减少了总编译时间和对已编译代码的内存需求;
  • 方法内嵌技术为大部分程序消除了大多数动态方法调用;
  • 对非内嵌方法的更快的方法调用。

3) 精确的、相继的(generational)复制垃圾回收器

  • 更快的对象分配;
  • 精确性提供了更准确的对象回收(与保守的(conservative)或半精确的(partially-accurate)那种可引起难以预料的内存泄漏的回收器不同);
  • 相继回收对大多数程序来说极大地提高了回收效率;
  • 对大多数程序来说, 相继回收还极大地减小了回收"旧的对象"而引起暂停所出现的频率;
  • 相继回收也为使用大量"活的(live)"对象的内存的应用程序极大地改善了性能扩展性;
  • 使用标记-整理(mark-compact)算法来回收"旧的"对象,消除了内存碎 片,增加了本地性(locality);
  • 增量"无暂停"垃圾回收器为"长寿"对象、甚至为极大量的"活"的对象在实质上消除了对象回收过程中出现的用户可视的暂停,这对等待时间敏感的应用程序(如服务器)以及大数据量的程序来说是理想的;

4) 先进的高级设计

  • 透明调试和简档(profiling)语意--Java HotSpot体系结构能够使本地代码的生成及优化对程序员完全透明,它可以按照纯字节码语意提供全部简档和调试信息,而不管内部实际上所用的优化方法。

3. 体系结构 Java HotSpot性能引擎的体系结构使多年来在Sun Microsystems的实验室里所做的研究达到了顶点。它综合采用了具有最新技术水平的内存模型、垃圾回收器和适配性优化器;并且它是以一种特别高级的和面向对象的风格写成的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值