#
第四十一章 Caché 变量大全 $ZSTORAGE 变量
包含进程的最大可用内存。
# 大纲
```
$ZSTORAGE
$ZS
```
# 描述
`$ZSTORAGE`包含`JOB`的进程私有内存的最大内存量(以`KB`为单位)。此内存可用于局部变量、堆栈和其他表。此内存限制不包括例程目标代码的空间。此内存根据需要分配给进程,例如在分配数组时。
一旦将此内存分配给进程,通常在该进程退出之前不会释放它。但是,当大量内存被使用(例如,大于32MB)然后被释放时,系统间IRIS会尝试在可能的情况下将释放的内存释放回操作系统。
还可以使用`$ZSTORAGE`设置最大内存大小。例如,以下语句将作业的最大进程专用内存设置为`524288 KB`:
```java
SET $ZSTORAGE=524288
```
更改`$ZSTORAGE`会更改`$STORAGE`特殊变量的初始值,该变量包含进程的当前可用内存(以字节为单位)。
`$ZSTORAGE`的最大值为`2147483647`。`$ZSTORAGE`默认值为`262144`。`$ZSTORAGE`的最小值为`128`。`$ZSTORAGE`值大于最大值或小于最小值会自动默认为最大值或最小值。`$ZSTORAGE`设置为整数值;InterSystems IRIS截断任何小数部分(如果指定)。
可以通过更改最大每进程内存(KB)系统配置设置来更改`$ZSTORAGE`默认值。在管理门户中,依次选择System Administration、Configuration、Systtem Configuration、Memory和Startup。可以根据需要增加每个进程的最大内存(KB),最大为2147483647 KB。更改每个进程的最大内存(KB)会更改后续启动的进程的`$ZSTORAGE`值;对当前进程的`$ZSTORAGE`值没有影响。
![image](77C3C8B1AB324C1993338A39D5579A17)
![image](85C6C2092243441193944B91DB6F6191)
# 示例
以下示例将`$ZSTORAGE`设置为其最大值和最小值。尝试将`$ZSTORAGE`设置为小于最小值的值(16)时,会自动将`$ZSTORAGE`设置为其最小值(128):
```java
/// d ##class(PHA.TEST.SpecialVariables).ZS()
ClassMethod ZS()
{
SET $ZS=128
WRITE "minimum storage=",$ZS,!
SET $ZS=16
WRITE "less than minimum storage=",$ZS,!
SET $ZS=2147483647
WRITE "maximum storage=",$ZS,!
}
```
```java
DHC-APP>d ##class(PHA.TEST.SpecialVariables).ZS()
minimum storage=128
less than minimum storage=128
maximum storage=2147483647
```