IBM 在 z/OS 平台上实现了共享类技术。Apple Computer Inc. 在 Mac OS X 上实现了名为 Java Shared Archive(JSA)的一种共享类,而 Sun 在 J2SE 1.5 版中引入了基于 JSA 技术的 Class Data Sharing (CDS)。让我们分析一下这些实现是如何工作的。
层次结构中的每一个类装载器检查其缓存,确定这个类是否已经装载。假如还没有装载,那么类装载器就向其父类装载器传递一个检查装载请求,这样一直上溯到层次结构顶部的 PRimordial 或者 bootstrap 类装载器。假如没有在任何缓冲区中发现这个类,那么每一个类装载器都会试图从自己的存储库中装载这个类,假如成功,就返回这个类。否则,它将请求传递给层次结构中下面的装载器。这种模型保证了首先检查最受信任的存储库,并防止信任程度低的代码通过采用与核心 API 成员相同的名字代替受信任的核心 API 类。
假如类是 primordial 类或者定义的类装载器是共享类装载器,那么类对象将在共享堆中创建,并且类标记为共享类。图 2 显示了 bootstrap 类装载器位于类装载器层次结构的顶部,并负责装载核心 API 中的类。这些类是信任程度最高的。扩展类装载器装载 extensions 目录中的标准扩展 JAR 文件中的类。共享应用程序类装载器可以用于共享用户或者应用程序类。
z/OS 2.3 上的 Customer Information Control System Transaction Server (CICS TS) 是运行 Java 事务和应用程序的主要商业产品之一(目前使用了 IBM JVM 的共享类技术)。CICS TS 2.3 引入了共享类缓存工具,它将共享类功能扩展为它所控制的 JVM 池(称为它的 JVMset)。