Heap storage statistics

Language Environment heap storage, other than what is explicitly defined using THREADHEAP, is managed at the enclave level. Each enclave has its own heap-type resources, which are shared by the threads that execute within the enclave. Heap storage defined using THREADHEAP is controlled at the thread level.

Table 1 describes the fields in the storage report that contain various statistics about heap storage. These statistics, in all cases, specify totals for the whole enclave. For THREADHEAP, they indicate the total across all threads in the enclave.

Table 1. Storage report fields that display heap storage statistics
Statistics categories Field contents
THREADHEAP
Initial size
Default initial allocation, as specified by the corresponding runtime option. For HEAP24, the initial size is the value of the initsz24 of the HEAP option.
Increment size
Minimum incremental allocation, as specified by the corresponding runtime option. For HEAP24, the increment size is the value of the incrsz24 of the HEAP option.
Maximum used by all concurrent threads
Maximum total amount used by all concurrent threads at any one time.
Largest used by any thread
Largest amount used by any single thread
Successful Get Heap requests
Number of Get Heap requests.
Successful Free Heap requests
Number of Free Heap requests.
Number of segments allocated
Number of incremental segments allocated.
Number of segments freed
Number of incremental segments individually freed.
  • HEAP
  • HEAP24
  • ANYHEAP
  • BELOWHEAP
Initial size
Start of changeDefault initial allocation, as specified by the corresponding runtime option. For HEAP24, the initial size is the value of the initsz24 of the HEAP option.End of change
Increment size
Minimum incremental allocation, as specified by the corresponding runtime option. For HEAP24, the increment size is the value of the incrsz24 of the HEAP option..
Total heap storage used
Largest total amount used by the enclave at any one time.
Successful Get Heap requests
Number of Get Heap requests.
Successful Free Heap requests
Number of Free Heap requests. The number of Free Heap requests could be less than the number of Get Heap requests if the pieces of heap storage acquired by individual Get Heap requests were not freed individually, but rather were freed implicitly in the course of enclave termination.
Number of segments allocated
Number of incremental segments allocated.
Number of segments freed
Number of incremental segments individually freed. The number of incremental segments individually freed could be less than the number allocated if the segments were not freed individually, but rather were freed implicitly in the course of enclave termination.
Additional heap statistics Besides the fixed types of heap, additional types of heap can be created, each with its own heap ID. You can create and discard these additional types of heap by using the CEECRHP callable service.
Successful Create Heap requests
Number of successful Create Heap requests.
Successful Discard Heap requests
Number of successful Discard Heap requests. The number of Discard Heap requests could be less than the number of Create Heap requests if the special heaps allocated by individual Create Heap requests were not freed individually, but rather were freed implicitly in the course of enclave termination.
Total heap storage used
Largest total amount used by the enclave at any one time.
Successful Get Heap requests
Number of Get Heap requests.
Successful Free Heap requests
Number of Free Heap requests.
Number of segments allocated
Number of incremental segments allocated.
Number of segments freed
Number of incremental segments individually freed.