快速业务通道

Java技术,IBM风格: IBM Developer Kit简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
分配给给定对象,即使总内存是足够的。即使在内存看起来足够的情况下,这也会导致 OutOfMemoryError。

使用保守性收集器的另一个影响是需要对 Java 对象进行 pin 和 dose。当从 JNI(本机)代码引用对象时,它们就被 pin。当从 Java 堆栈或寄存器引用对象(有意或无意地成为保留的垃圾)时,对象就成为 dose 的。在垃圾收集器对 Java 对象进行紧凑排列期间,pin 和 dose 会阻止对象在 Java 堆上移动。这是因为在对象移动时,Java 堆栈和寄存器中的对象引用无法更新为对象的新位置;对于保留的垃圾,它实际上会变成一个不引用 Java 对象的值。

在垃圾收集的紧凑排列阶段,无法移动这些对象,这造成无法完全消除 Java 堆上对象的碎片化,因此留下了残留的碎片。这个问题造成在 Java 堆上即使看起来有足够的空闲内存,也无法分配对象,同时导致运行应用程序所需的 Java 堆比真正需要的大。

这两个问题都通过转移到类型精确的收集器(type-accurate collector) 解决了,这种收集器维护自己的经过良好描述的类型精确的堆栈。这避免了保留垃圾的问题,因为它知道一个值是否引用 Java 对象。因为能够编辑这些类型精确的堆栈,所以在紧凑排列期间对象可以移动了,因而消除了残留碎片问题。

并行收集器

紧凑排列是运行垃圾收集时最消耗时间的阶段。为了减少紧凑排列的时间,在 Java 5.0 技术的 IBM 实现中引入了并行紧凑排列(parallel compaction)。

并行紧凑排列允许多个线程帮助在 Java 堆上移动对象,从而将大量的小块空闲空间合并成少量的大块空间。实现的方法是,对于进程可以使用的每个 CPU,建立一个线程,并将 Java 堆分割成许多名义上的区域,这些线程分别负责每个区域的紧凑排列。

分代的并发收集器

分代并发(或称为 gencon)收集器利用了 “大多数对象在年轻时就死了” 这一并不可靠的假设,通过创建分成两代的 Java 堆来实现。通过将对象分成新老两代,收集过程可以主要关注年轻的对象。年轻(也称为婴儿(nursery)) 代使用一个半空间复制收集器,而老年(也称为长存的(tenured)) 代使用并发的标志扫描收集器。

消息 GC 日志记录更新

为了改进 GC 组件的 RAS 品质,GC 日志记录机制在两个方面进行了更新。日志记录器提供更详细的信息并采用 XML 格式而不是一般文本;由于第一次数据捕捉失败,所以它还将此数据的子集记录进内存中的缓冲区。

详细 GC 输出转移到基于 XML 的结构,因此更容易通过简单的 XML 读取器(比如 Web 浏览器)查看数据,也更容易通过各种详细 GC 分析工具进行分析。

内存中的跟踪缓冲区在发生失败时或者应用户的请求存储到文件,所以即使详细 GC 没有启用,它也可以提供关于 Java 内存使用情况和 GC 状态的基本信息,而且它大大提高了第一次失败数据捕捉信息的质量。

对 JIT 编译器的改进

尽管 Java 平台的用户对 JIT 编译器的内部不了解,但是它对 Java 运行时的应用程序执行性能影响很大。它在运行时将 Java 字节码转换为优化的机器码,从而大大提高了 Java 方法的运行速度。

从 1.4.2 到 5.0 版,许多改进和改变提高了 IBM JIT 编译器的性能,同时减小了 JIT 编译对正在运行的应用程序的影响。表 1 列出了主要的变化:

表 1. IBM JIT 编译器中的改进

1.4.2 5.0
在正在执行 Java 方法的 Java 线程上同步地编译 使用单独的异步编译线程
在需要时对方法进行编译 方法排队进行编译
对于 Java 方法,使用本机堆栈 维护一个单独的 Java 堆栈
只有一种编译优化 共有 5 个编译优化级别
方法只能编译一次 可以进行重新编译
可能出现包含循环的堆栈上方法替换 没有堆栈上替换
当应用 -Xdebug 时,禁用 JIT 在调试模式中,JIT 继续采用降低的优化级别进行编译

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号