#
第四十一章 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 ```