探索 IBM JRE 中最新的类共享特性
2008-11-25 14:33
211 查看
IBM® JRE for Java™ SE 6 的最新版本增强了在版本 5 中首次引入的类共享特性。在本文中,性能分析师 Adam
Pilkington 和 Graham Rawson 详细介绍这些改进,包括对应用程序启动时间和内存使用量的改进。
共享类基础结构是在 IBM JRE for the Java platform SE 的版本 5 中首次引入的。最新版本对这个特性的改进有助于提高
Java 应用程序在启动时间和内存使用量方面的性能。在本文中,我们介绍这些改进并使用 Eclipse 和 Apache Tomcat
作为客户端和服务器端操作环境的示例,从而展示这些改进的好处。我们将提供安装说明,让您可以自己实践一下,但是您应该熟悉这两个应用程序以及 IBM
的类共享特性。如果您还不熟悉 IBM 的类共享特性,建议先阅读文章 “Java 技术,IBM 风格: 类共享”,这篇文章解释了基本概念。
如果希望实践本文提供的示例,现在可以下载 IBM JRE for Java 6 for Linux® and AIX® 的实现。目前没有可以单独下载的 Windows® 实现,而是以 预构建的 Eclipse 下载包 形式提供这个实现。注意,需要 IBM 注册(免费)。
IBM 共享类中的新特性?
IBM JRE for Java 5 允许通过缓存在 JVM 之间共享类。在 IBM JRE for Java 6
中,可以使这个缓存持久化并用它共享编译的代码。另外,存储这些缓存项的方法效率更高了。
共享的类
在 Java 虚拟机 (JVM) 之间共享类的功能是在 IBM JRE for the Java platform SE 的版本 5 中首次引入的,在
Java 6 中继续支持并进一步增强了此功能。当 JVM 装载类时,可以把它们放在缓存中。当以后请求这个类时,会尽可能通过缓存满足请求,而不必从对应的 JAR
文件再次装载这个类。
可以使用清单 1 中的命令行选项控制缓存的最大大小,但是请注意,这个最大大小可能受到操作系统共享内存限制的约束:
清单 1. 设置最大缓存大小的命令行选项
Ahead of Time (AOT) 代码存储
JVM 通常在执行程序时把 Java 方法编译为原生代码。在每次运行程序时,都会生成原生代码。IBM JRE for Java 6 SR1 JVM
引入了使用 Ahead of Time 编译技术编译 Java 方法的功能。用这种技术生成的原生代码不但可以在当前的 JVM
中使用,而且可以存储在共享类缓存中。使用共享类缓存启动的另一个 JVM 可以使用缓存中存储的 AOT
代码,从而减少启动时间。这是由于节省了编译所需的时间,而且执行采用 AOT 代码形式的方法速度更快。AOT
代码是原生代码,执行速度通常比解释的代码快(但是不太可能像 JIT 生成的代码那么快)。
可以使用命令行选项定义 AOT 代码在共享类缓存可以占用的最小和最大空间,见清单 2。如果没有指定可以存储的 AOT
代码最大量,默认设置是使用整个缓存。但是,这不会导致整个缓存被 AOT 代码填满,因为只能从缓存中已有的类生成 AOT 代码。
清单 2. 控制缓存的 AOT 代码量的命令行选项
图 1 说明共享类和 AOT 代码如何占用缓存空间,以及缓存空间设置如何控制它们使用的可用空间额度。
图
1. 共享类缓存的组成
本文转自IBM Developerworks中国
请点击此处查看全文
Pilkington 和 Graham Rawson 详细介绍这些改进,包括对应用程序启动时间和内存使用量的改进。
共享类基础结构是在 IBM JRE for the Java platform SE 的版本 5 中首次引入的。最新版本对这个特性的改进有助于提高
Java 应用程序在启动时间和内存使用量方面的性能。在本文中,我们介绍这些改进并使用 Eclipse 和 Apache Tomcat
作为客户端和服务器端操作环境的示例,从而展示这些改进的好处。我们将提供安装说明,让您可以自己实践一下,但是您应该熟悉这两个应用程序以及 IBM
的类共享特性。如果您还不熟悉 IBM 的类共享特性,建议先阅读文章 “Java 技术,IBM 风格: 类共享”,这篇文章解释了基本概念。
如果希望实践本文提供的示例,现在可以下载 IBM JRE for Java 6 for Linux® and AIX® 的实现。目前没有可以单独下载的 Windows® 实现,而是以 预构建的 Eclipse 下载包 形式提供这个实现。注意,需要 IBM 注册(免费)。
IBM 共享类中的新特性?
IBM JRE for Java 5 允许通过缓存在 JVM 之间共享类。在 IBM JRE for Java 6
中,可以使这个缓存持久化并用它共享编译的代码。另外,存储这些缓存项的方法效率更高了。
共享的类
在 Java 虚拟机 (JVM) 之间共享类的功能是在 IBM JRE for the Java platform SE 的版本 5 中首次引入的,在
Java 6 中继续支持并进一步增强了此功能。当 JVM 装载类时,可以把它们放在缓存中。当以后请求这个类时,会尽可能通过缓存满足请求,而不必从对应的 JAR
文件再次装载这个类。
可以使用清单 1 中的命令行选项控制缓存的最大大小,但是请注意,这个最大大小可能受到操作系统共享内存限制的约束:
清单 1. 设置最大缓存大小的命令行选项
Running java -X will show the following option ... Arguments to the following options are expressed in bytes. Values suffixed with "k" (kilo) or "m" (mega) will be factored accordingly. : -Xscmx<x> set size of new shared class cache to <x> : |
JVM 通常在执行程序时把 Java 方法编译为原生代码。在每次运行程序时,都会生成原生代码。IBM JRE for Java 6 SR1 JVM
引入了使用 Ahead of Time 编译技术编译 Java 方法的功能。用这种技术生成的原生代码不但可以在当前的 JVM
中使用,而且可以存储在共享类缓存中。使用共享类缓存启动的另一个 JVM 可以使用缓存中存储的 AOT
代码,从而减少启动时间。这是由于节省了编译所需的时间,而且执行采用 AOT 代码形式的方法速度更快。AOT
代码是原生代码,执行速度通常比解释的代码快(但是不太可能像 JIT 生成的代码那么快)。
可以使用命令行选项定义 AOT 代码在共享类缓存可以占用的最小和最大空间,见清单 2。如果没有指定可以存储的 AOT
代码最大量,默认设置是使用整个缓存。但是,这不会导致整个缓存被 AOT 代码填满,因为只能从缓存中已有的类生成 AOT 代码。
清单 2. 控制缓存的 AOT 代码量的命令行选项
Running java -X will show the following options ... Arguments to the following options are expressed in bytes. Values suffixed with "k" (kilo) or "m" (mega) will be factored accordingly. : -Xscminaot<x> set minimum shared classes cache space reserved for AOT data to <x> -Xscmaxaot<x> set maximum shared classes cache space allowed for AOT data to <x> |
图
1. 共享类缓存的组成
本文转自IBM Developerworks中国
请点击此处查看全文
相关文章推荐
- 解决从pip上下载的最新flask版本不能运行flaskr和最新特性的问题
- 最新jQuery Mobile 1.2版本新特性
- Pass4side 最新热门科目-IBM 000-718,933免费下载+优惠券
- 在 App 中充分利用 iPhone OS 3.2 的文件共享特性
- jre 9下载v9.0官方最新版
- Silverlight 5 RC新特性探索系列:14.Silverlight 5 RC 对字体呈现的改进
- IBM DB2 9的九大新特性
- 如何让你的共享软件成为印钞机-最新内幕大暴光
- JSR 286 Portlet 的新特性,第 2 部分: 资源服务、事件与共享呈现参数
- Asp.Net Mvc Beta新特性之自动绑定(2)-深入探索篇
- hadoop2.5发布:最新编译 32位、64位安装、源码包、API以及新特性
- C++11最新标准的新特性介绍(1)
- CAS在IBM Websphere7集群中实现票据共享
- 登录IBM智慧运作网络大会,赢取最新款iPod nano!
- (共享)红头发版CCNA完全实验手册(最新版)
- PHP5.4最新特性
- 号外!激动人心的DotNetNuke(DNN)2.2x新特性最新汇报!
- [转]Java se 7 最新特性研究(一)
- JSR 286 Portlet 的新特性: Portlet 2.0 新特性介绍(portlet协作、事件机制、数据共享)
- 最新力作-通讯服务器框架之对外接口服务器功能特性