|
Derivation: LIBrary STACK storage
LIBSTACK
controls the allocation of the thread's library stack storage. This
stack is used by Language Environment and HLL
library routines that require save areas below the 16MB line.
- Non-CICS default
- LIBSTACK=((4K,4K,FREE),OVR)
- CICS® default
- LIBSTACK=((32,4080,FREE),OVR)
Syntax
.-FREE-.
>>-LIBSTACK--=--(--(--init_size--,--incr_size--,--+-KEEP-+------>
.-OVR----.
>--)--,--+-NONOVR-+--)-----------------------------------------><
- init_size
- Determines the minimum size of the initial library stack segment.
The storage is contiguous.
Specify init_size as n, nK,
or nM bytes of storage. init_size can
be preceded by a minus sign. In environments other than CICS, if you specify a negative number, all
available storage minus the amount specified is used for the initial
stack segment.
In non-CICS environments, an init_size of
0 or -0 requests half of the largest block of contiguous storage below
the 16-MB line. In addition when STACK(,,ANY,,,) is in effect, Language Environment® does
not acquire the initial library stack segment until the first program
that requires LIBSTACK runs.
Language Environment allocates
the storage rounded up to the nearest multiple of 8 bytes.
- incr_size
- Determines the minimum size of any subsequent increment to the
library stack area. Specify this value as n, nK,
or nM bytes of storage. The actual amount
of allocated storage is the larger of 2 value (theincr_size or
the requested size) rounded up to the nearest multiple of 8 bytes.
If you do not specify incr_size, Language Environment uses
the Non-CICS default setting of 4K. If incr_size=0, Language Environment gets
only the amount of storage needed at the time of the request, rounded
up to the nearest multiple of 8 bytes.
The requested size
is the amount of storage a routine needs for a stack frame. For example,
if the requested size is 9000 bytes, incr_size is
specified as 8K, and the initial stack segment is full, then Language Environment gets
a 9000 byte stack increment from the operating system to satisfy the
request. If the requested size is smaller than 8K, Language Environment gets
an 8K stack increment from the operating system.
- FREE
- Specifies that Language Environment releases
storage allocated to LIBSTACK increments when the last of the storage
in the library stack is freed. The initial library stack segment is
not released until the enclave terminates.
- KEEP
- Specifies that Language Environment does
not release storage allocated to LIBSTACK increments when the last
of the storage is freed.
- OVR
- Specifies that the option can be overridden.
- NONOVR
- Specifies that the option cannot be overridden.
CICS considerations - If ALL31(ON) is specified, LIBSTACK is allocated above the 16MB
line.
- The initial and increment sizes for LIBSTACK are rounded to the
next higher multiple of 8 bytes.
- The minimum initial size is 32 bytes; the minimum increment size
is 4080.
- The default increment size under CICS is
4080 bytes, rather than 4096 bytes, to accommodate the 16-bytes CICS storage check zone. Without
this accommodation, an extra page of storage is allocated (only when
the storage allocation is below the 16-MB line).
z/OS® UNIX considerations The
LIBSTACK option sets the library stack characteristics on each thread.
The
recommended setting for LIBSTACK under z/OS UNIX is LIBSTACK=((4K,4K,FREE),OVR).
Performance considerations To improve performance,
use the storage report numbers generated by the RPTSTG run-time option as
an aid in setting the initial and increment size for LIBSTACK.
|