SYNOPSIS void low_memory(int what, int limitvalue, int memory, int reservestate) DESCRIPTION This efun is called when there is a (potential) low-memory situation. Two different limits for the amount of allocated memory can be configured: a soft limit and a hard limit. If the soft limit is exceeded, the driver calls low_memory() but does nothing else. If the hard limit is exceeded, the driver calls low_memory() as well, but initiates a garbage collection directly after the call. The efun is called as well directly before a user-initiated garbage collection is started. denotes the type of limit which was exceeded: - NO_MALLOC_LIMIT_EXCEEDED (0) No limit was exceeded, but a garbage collection was requested by a call to garbage_collection() and it will begin right after low_memory() returns. - SOFT_MALLOC_LIMIT_EXCEEDED (1) The soft limit was exceeded. - HARD_MALLOC_LIMIT_EXCEEDED (2) The hard limit was exceeded. A garbage collection will begin right after low_memory() returns. specifies the numerical value of the limit which was exceeded. It is 0 in case of NO_MALLOC_LIMIT_EXCEEDED. specifies the amount of allocated memory right now. specifies the current state of the memory reserves of the driver. The states of the 3 different reserves are OR'ed together. - USER_RESERVE_AVAILABLE (1) The user reserve is available. - MASTER_RESERVE_AVAILABLE (2) The master reserve is available. - SYSTEM_RESERVE_AVAILABLE (4) The system reserve is available. This efun might be used to inform users about the garbage collection and the expected long lag. Another possibility is to initiate a garbage collection deliberately at a suitable time (e.g. during the following night) after the soft limit was hit. REMARKS If in a low_memory condition when the memory reserves have been used already and they could not be re-allocated after a garbage collection slow_shut_down() is called instead of calling this function again. HISTORY Introduced in 3.3.719 SEE ALSO debug_info(E), garbage_collection(E), slow_shut_down(M), memory(C) malloc(D)