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).

Read syntax diagramSkip visual syntax diagram
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