HEAP64 (AMODE 64 only)
HEAP64 controls the allocation of user heap storage for AMODE 64 applications and specifies how that storage is managed. Heaps are storage areas containing user-controlled dynamically allocated variables or data. An example is C data allocated as a result of the malloc(), calloc(), and realloc() functions.
The default value for AMODE 64 applications is HEAP64(1M,1M,KEEP,32K,32K,KEEP,4K,4K,FREE).
Syntax .-KEEP-. >>-+-HEAP64-+--(--+--------+--,--+--------+--,--+------+--,-----> '-H64----' '-init64-' '-incr64-' +-FREE-+ '-FILL-' .-KEEP-. >--+--------+--,--+--------+--+------+--,--+--------+--,--------> '-init31-' '-incr31-' '-FREE-' '-init24-' .-KEEP-. >--+--------+--+------+--)------------------------------------->< '-incr24-' '-FREE-'
- init64
- Determines the initial allocation of heap storage that is obtained above the 2G bar. Specify this value as nM bytes of storage. If a value of 0 or less is specified, the default is used.
- incr64
- Determines the minimum size of any subsequent increment to the user heap storage obtained above the 2G bar. Specify this value as nM bytes of storage. If a value less than 0 is specified, the default is used.
- KEEP
- Specifies that an increment to user heap storage is not released when the last of the storage within that increment is freed.
- FREE
- Specifies that an increment to user heap storage is released when the last of the storage within that increment is freed.
- FILL
- Specifies that an increment to user heap storage is released when the last of the storage within that increment is freed. In addition, when a storage request results in a new increment segment being created which is greater than the incr64 size, the entire segment is filled by the single storage request. This option is available only for user heap storage above the bar.
- init31
- Determines the minimum initial size of user heap storage that is obtained above the 16M line and below the 2G bar. This value can be specified as n, nK, or nM number of bytes. If 0 is specified, the initial storage is obtained on the first use and is based on the increment size. The amount of allocated storage is rounded up to the nearest multiple of 8 bytes.
- incr31
- Determines the minimum size of any subsequent increment to user heap storage that is obtained above the 16M line and below the 2G bar. This value can be specified as n, nK, or nM number of bytes. The amount of allocated storage is rounded up to the nearest multiple of 8 bytes.
- init24
- Determines the minimum initial size of user heap storage that is obtained below the 16M line. This value can be specified as n, nK, or nM number of bytes. If 0 is specified, the initial storage is obtained on the first use and is based on the increment size. The amount of allocated storage is rounded up to the nearest multiple of 8 bytes.
- incr24
- Determines the minimum size of any subsequent increment to user heap storage that is obtained below the 16M line. This value can be specified as n, nK, or nM number of bytes. The amount of allocated storage is rounded up to the nearest multiple of 8 bytes.
z/OS® UNIX considerations
In a multithreaded environment, user heap storage is shared by all threads the process.
Performance consideration
You can improve performance with the HEAP64 runtime option by specifying values that minimize the number of times the operating system allocates storage. See RPTSTG for information about how to generate a report you can use to determine the optimum values for the HEAP64 runtime option.
For more information
- For more information about heap storage and heap storage tuning with storage report numbers, see z/OS Language Environment Programming Guide.
- For more information about the RPTSTG runtime option, see RPTSTG .