针对 JVM 的 Language Environment 相关可调度单元组存储器
JVM 服务器同时具有静态和动态存储器需求,主要是在 64 位存储器中。 它可能使用大量的 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 存储器。
| 语言环境运行时选项 | JVM 服务器值示例 |
|---|---|
| 堆存储器 |
|
| 库堆存储器 |
|
| 可以驻留在存储器中任何位置的库例程堆栈帧 |
|
| 多线程应用程序的可选堆存储管理 (64 位) |
|
| 多线程应用程序的可选堆存储管理 (31 位) |
|
| 为存储不足情况保留的存储量以及分配和释放时的存储初始内容 |
|
语言环境运行时选项 (例如 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 进行更改,您可以使用这些更改来限制 REGION 和 MEMLIMIT 大小。 一种可能的方法是具有 Java 拥有区域 (JOR) ,所有 Java 程序请求都将路由到该区域。 此类区域仅运行 Java 工作负载,从而最大限度减少所需的 CICS® DSA 存储量,并允许将最大数量的 MVS™ 存储分配给 JVM。