$ZSTORAGE contains the maximum amount of memory, in Kbytes, for a job’s process-private memory. This memory is available for local variables, stacks, and other tables. This memory limit does not include space for the routine object code. This memory is allocated to the process as needed, for example when allocating an array.
Once this memory is allocated to the process, it is generally not deallocated until the process exits. However, when a large amount of memory is used (for example greater than 32MB) and then freed, InterSystems IRIS attempts to release deallocated memory back to the operating system, where possible.
You can also use $ZSTORAGE to set the maximum memory size. For example, the following statement sets the job’s maximum process-private memory to 524288 Kbytes:
Changing $ZSTORAGE changes the initial value for the $STORAGE special variable, which contains the current available memory (in bytes) for the process.
The maximum value for $ZSTORAGE is 2147483647. The $ZSTORAGE default is 262144. The minimum value for $ZSTORAGE is 128. $ZSTORAGE values larger than the maximum or smaller than the minimum automatically default to the maximum or minimum value. $ZSTORAGE is set to an integer value; InterSystems IRIS truncates any fractional portion (if specified).
You can change the $ZSTORAGE default by changing the Maximum per Process Memory (KB) system configuration setting. In the Management Portal, select System Administration, Configuration, Systtem Configuration, Memory and Startup. You can increase Maximum per Process Memory (KB) as desired, up to a maximum of 2147483647 Kbytes. Changing Maximum per Process Memory (KB) changes the $ZSTORAGE value for subsequently initiated processes; it has no effect on the $ZSTORAGE value for current processes.
The following example sets $ZSTORAGE to its maximum and minimum values. Attempting to set $ZSTORAGE to a value (16) that is less than the minimum value automatically sets $ZSTORAGE to its minimum value (128):
SET $ZS=128 WRITE "minimum storage=",$ZS,! SET $ZS=16 WRITE "less than minimum storage=",$ZS,! SET $ZS=2147483647 WRITE "maximum storage=",$ZS,!
$STORAGE special variable