Java技术,IBM风格: 类共享 - 编程入门网
.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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |