快速业务通道

Java技术,IBM风格: 类共享 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
.ibm.oti.shared 包中,并包含在 jre/lib 目 录的 vm.jar 中。希望共享类的每个类装载器都必须从 SharedClassHelperFactory 获得一个 SharedClassHelper 对象。创建 SharedClassHelper 之后,它属于请求它的类装载器,只能存储这个类装载器定 义的类。SharedClassHelper 为类装载器提供一个简单的 API,可以在 JVM 连接 的类缓存中寻找和存储类。如果这个类装载器被垃圾收集,那么它的 SharedClassHelper 也被垃圾收集。

使用 SharedClassHelperFactory

SharedClassHelperFactory 是一个单实例对象,可以使用静态方法 com.ibm.oti.shared.Shared.getSharedClassHelperFactory() 获得它;如果 JVM 中启用了类共享支持,那么这个方法返回一个工厂,否则返回 null。

使用 SharedClassHelper

这个工厂可以返回三种不同的 SharedClassHelper,分别供不同类型的类装载 器使用:

SharedClassURLClasspathHelper:这个 helper 供那些有 URL 类路径概念的 类装载器使用。使用 URL 类路径数组在缓存中存储和寻找类。必须可以通过类路 径中的 URL 资源访问文件系统上要缓存的类。这个 helper 还对在它的生命周期 内如何修改类路径有一些限制。

SharedClassURLHelper:这个 helper 供那些没有类路径概念,可以从任意 URL 装载类的类装载器使用。必须可以通过 URL 资源访问文件系统上要缓存的类 。

SharedClassTokenHelper:这个 helper 实际上将共享类缓存转换为一个简单 的哈西表 —— 类按照一个对于缓存无意义的字符串键标志 进行存储。这是惟一 一种不提供动态更新功能的 helper,因为存储的类没有相关联的文件系统上下文 。

每个 SharedClassHelper 都有两个基本方法,但是在 helper 类型之间方法 的参数有差异:

在类装载器向它的父类装载器请求类(如果存在的话)之后,应该调用 byte [] findSharedClass(String classname...)。如果 findSharedClass() 没有返 回 null,那么类装载器应该在返回的字节数组上调用 defineClass()。注意,这 个函数为 defineClass() 返回一个特殊的 cookie,而不是实际的类字节,所以 不能修改字节。

在定义一个类之后,应该立即调用 boolean storeSharedClass(Class clazz...)。如果成功地存储了这个类,那么这个方法返回 true,否则返回 false。

Java技术,IBM风格: 类共享(6)

时间:2011-05-20 IBM Ben Corrie

其他考虑因素

在应用程序中部署类共享时,需要考虑到安全性和缓存调整等因素。这里简短 地讨论这些考虑因素。

安全性

在默认情况下,以用户级安全性创建类缓存,所以只有创建这个缓存的用户才 能访问它。因此,每个用户的默认缓存名称是不同的,从而避免了冲突。在 UNIX 上,有一个指定 groupAccess 的子选项,它允许创建这个缓存的用户的主组中的 所有用户访问这个缓存。但是,不管使用什么访问级别,只有创建缓存的用户或 根用户能够销毁缓存。

除此之外,如果安装了 SecurityManager,那么类装载器只能在被显式地授予 正确权限的情况下共享类。关于设置这些权限的更多细节,请参考用户指南(参 见 参考资料)。

垃圾收集和即时编译

启用类共享并不影响类的垃圾收集(GC)。仍然按照非共享情况下的方式对类 和类装载器进行垃圾收集。另外,在使用类共享时,对 GC 模式或配置没有限制 。

不能将即时(JIT)编译的代码存储在类缓存中,所以在启用类共享时 JIT 的 行为没有变化。

缓存大小限制

当前缓存大小的理论最大值是 2GB。缓存大小受到以下因素的限制:

可用磁盘空间(只适用于 Microsoft Windows)。 在 javasharedresources 目录中创建一个内存映射文件来存储类数据。这个目录在用户的 %APPDATA% 目录 中创建。每当重新启动 Windows 时,删除共享缓存文件。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号