REDUCE

26.3 Dynamic configuration of Heap Size and Binding Stack

The PSL workspaces Heap and Bindingstack can be enlarged at run time. This is often necessary for programs that allocate a lot dynamic storage (heap) or use variable binding intensively.

If heap space gets low, the garbage collector tries to increase heap size automatically. This is a reaction to an emergency situation though and it is tried after many garbage collections. Moreover, depending on the history of the PSL session, the system may find itself unable to allocate the requested memory causing an LISP error condition. A manual increase of heap size is much better for overall performance.

The Binding stack is not enlarged automatically, because in case of on infinite loop the PSL memory would blow up and it would take a very long time until the user would see a problem (if at all).

Two functions have been added to PSL for handling heap and binding stack size:

(set-heap-size N:Integer or NIL): Integer or NIL expr

(set-bndstk-size N:Integer or NIL): Integer or NIL expr