|
Derivation: HEAP storage CHecKing
Use
HEAPCHK to run additional heap check tests.
- Non-CICS default
- HEAPCHK=((OFF,1,0,0,0,1024,0,1024,0),OVR)
- CICS® default
- HEAPCHK=((OFF,1,0,0,0,1024,0,1024,0),OVR)
- Amode 64 default
- HEAPCHK=((OFF,1,0,0,0,1024,0,1024,0),OVR)
Syntax
.-OFF-.
>>-HEAPCHK--=--(--(--+-ON--+--,--------------------------------->
>--frequency--,--delay--,--call depth--,------------------------>
>--pool call depth--,--number of entries--,--pool number--,----->
.-OVR----.
>--number of entries 31--,--pool number 31--)--,--+-NONOVR-+---->
>--)-----------------------------------------------------------><
- OFF
- Indicates that no heap checking or tracing is done regardless
of the values of the remaining suboptions.
- ON
- Indicates that heap checking or tracing is activated based on
the values of the remaining suboptions.
- frequency
- The frequency at which the user heap is checked for damage to
the heap control information. It is specified as n, nK
or nM. A value of one (1) is the default
and causes the heap to be checked at each call to a Language Environment heap
storage management service. A value of n causes the user heap to be
checked at every nth call to a Language Environment heap
storage management service. A value of zero results in no check for
damage to the user heap.
- delay
- A value that causes a delay before user heap is checked for damage,
and is specified in n, nK
or nM. A value of zero (0) is the default
and causes the heap checking to begin with the first call to a Language Environment heap
storage management service. A value of n causes the heap checking
to begin following the nth call to a Language Environment heap
storage management service.
- call depth
- Specifies the depth of calls displayed in the traceback for the
heap storage diagnostics report. A value of zero is the default that
turns heap storage diagnostics reporting off.
The heap storage
diagnostics report consists of a set of tracebacks. Each traceback
is a snapshot of the stack (to a specified call depth) for each request
to obtain user heap storage that has not had a corresponding free
request.
- pool call depth
- Specifies the depth of calls in the traceback for each trace entry
of a heap pools trace. A value of zero is the default that turns heap
pools tracing off.
The heap pools trace is an in-core wrapping
trace. Each heap pool has a separate trace table. The heap pools trace
is only formatted from a system dump using the IPCS Verbexit LEDATA.
- number of entries
- Specifies the number of entries to be recorded in one heap pool
trace table for the main user heap in the application. Each pool has
its own trace table. If the number of entries is 0, the heap pool
trace table is not generated.
- pool number
- Specifies which pools are traced for the main user heap in the
application. You can either trace one pool or all pools. The value
should be a valid pool number from 1 to 12. If the pool number is
0, all pools will be traced.
- number of entries 31
- Specifies the number of entries to be recorded in one heap pool
trace table when an application is using heap storage from 31–bit
addressable storage (__malloc31()). Each pool has its own trace table.
If the number of entries is 0, the heap pool trace table is not generated.
This value is only supported in an AMODE64 environment.
- pool number 31
- Specifies which pools are traced when an application is using
heap storage from 31–bit addressable storage (__malloc31()). You can
trace either one pool or all pools. The value should be a valid pool
number from 1 to 12. If the pool number is 0, all pools will be traced.
This value is only supported in an AMODE64 environment.
- OVR
- Specifies that the option can be overridden.
- NONOVR
- Specifies that the option cannot be overridden.
Usage notes - If HEAPCHK(ON) is used with STORAGE(,heap_free_value), the free
areas of the heap will also be checked.
- If HEAPCHK(ON) is specified, this will result in a performance
degradation due to the additional error checking that is performed.
- A U4042 abend dump will be generated when an error is detected,
but no CEEDUMP will be produced.
- To request only a heap storage diagnostics report, you must specify
a zero for frequency, a zero for pool call depth and a number n greater
than zero for call depth. For example, you could specify HEAPCHK(ON,0,0,10,0,1024,0,1024,0).
Recommendation: Use a value of 10 to ensure an adequate
call depth is displayed so that you can identify the storage leak.
- To request heap pools tracing, set pool call depth to
a nonzero value and number of entries (for
AMODE 64 applications, number of entries, number
of entries 31, or both) to a nonzero value. To request
only heap pools tracing, in addition, set frequency to
zero and call depth to zero. The heap pools
trace is only formatted from a system dump using the IPCS Verbexit
LEDATA.
Recommendation: Use a value of 10 to ensure an adequate
call depth is displayed.
- For AMODE 64 applications, number of entries and pool number control
tracing for the set of heap pools located in storage above the 2GB
bar. Number of entries 31 and pool number 31 control tracing for the
set of heap pools located in storage above the 16MB line and below
the 2GB bar. Pool call depth applies to both sets of heap pools.
- Under normal termination conditions, when the call depth is greater
than zero, the heap storage diagnostics report is written to the CEEDUMP
report. This is independent of the TERMTHDACT setting.
- If a heap storage diagnostics report is desired while calling
CEE3DMP, you must specify the BLOCKS option.
|