针对 JVM 的 Language Environment 相关可调度单元组存储器

JVM 服务器同时具有静态和动态存储器需求,主要是在 64 位存储器中。 它可能使用大量的 31 位存储器。

注: 使用的 31 位存储量将取决于以下几个因素:
  • 配置参数
  • 其他产品的设计和使用
  • JVM 的设计
  • Java™ 工作负载。

例如,使用 -Xcompressedrefs 可能会提高性能,但需要 31 位存储器,并且应该始终与 -XXnosuballoc32bitmem 配合使用,以确保 JVM 根据需要为压缩引用动态分配 31 位存储器。 有关这些选项的更多信息,请参阅 IBM SDK Java Technology Edition 7.0.0中 JVM 的缺省设置即时编译 (JIT) 还需要 31 位存储器来存储已编译的类代码。

JVM 在使用 Language Environment 预初始化模块 CELQPIPI创建的 Language Environment ® 相关可调度单元组中作为 z/OS® UNIX System Services 进程运行。

JVM 存储器请求由 Language Environment 处理,后者根据定义的运行时选项分配 z/OS 存储器。

语言环境运行时选项由 DFHAXRO 设置。 这些程序为 JVM 相关可调度单元组提供的缺省值显示在 表 1中:
表 1. CICS 用于 JVM 相关可调度单元组的语言环境运行时选项
语言环境运行时选项 JVM 服务器值示例
堆存储器
HEAP64(256M,4M,KEEP,4M,1M,FREE,1K,1K,KEEP)
库堆存储器
LIBHEAP64(5M,3M)
可以驻留在存储器中任何位置的库例程堆栈帧
STACK64(1M,1M,16M)
多线程应用程序的可选堆存储管理 (64 位)
HEAPPOOLS64(ALIGN)
多线程应用程序的可选堆存储管理 (31 位)
HEAPPOOLS(ALIGN)
为存储不足情况保留的存储量以及分配和释放时的存储初始内容
STORAGE(NONE,NONE,NONE)
注: 对于当前 JVM 服务器值,请参阅库 SDFHSAMP 中的 DFHAXRO 成员。

语言环境运行时选项 (例如 HEAP64) 根据该类型存储器的初始值原理工作: 例如, 256 MB 64 位。 当 HEAP64 不能包含新请求时,将分配指定大小 (4 MB 以上) 或请求大小加控制信息 (以较大者为准) 的增量。 根据需要分配额外的增量以满足需求。 当增量为空时, Language Environment 将根据运行时值 KEEP 或 FREE z/OS 存储器。

有关 Language Environment 运行时选项的完整信息,请参阅 z/OS Language Environment Customization

在可能的情况下, 31 位和 64 位初始大小应涵盖总 31 位和 64 位存储需求,尽管可以接受一些增量。 这将减少总体 z/OS 存储需求和 CPU 时间,而与有许多增量时相比。

HEAP64 31 位增量大小不应设置为小于 1M ,应使用 FREE 选项。 在上一个示例中, 31 位参数设置为 4M, 1M和 FREE。

通过激活 DFHAXRO 中的 RPTO (ON) 和 RPTS (ON) 选项,可以看到 Language Environment 31 位和 64 位 HEAP 使用情况。 当 JVM 服务器停止时,将生成 Language Environment 存储器报告。

您可以通过修改和重新编译样本程序 DFHAXRO 来覆盖 Language Environment 运行时选项,如 使用 DFHAXRO 修改 JVM 服务器的相关可调度单元组中所述。 此程序是在 JVMSERVER 资源上设置的,因此您可以使用不同的名称,这就是为各个 JVM 服务器提供不同选项的原因 (如果需要)。

语言环境封套中 JVM 所需的存储量可能需要对安装出口, IEALIMIT 或 IEFUSI 进行更改,您可以使用这些更改来限制 REGIONMEMLIMIT 大小。 一种可能的方法是具有 Java 拥有区域 (JOR) ,所有 Java 程序请求都将路由到该区域。 此类区域仅运行 Java 工作负载,从而最大限度减少所需的 CICS® DSA 存储量,并允许将最大数量的 MVS™ 存储分配给 JVM。