Patent ID: 8190843

Claim:
A method for dynamically allocating memory among a plurality of processes, the method comprising: at a memory broker function for allocating memory in a computer system among a plurality of processes executing on the computer system and separate from the memory broker function, wherein the memory in the computer system includes stationary memory, discretionary memory, and unallocated memory: monitoring amounts of stationary memory, discretionary memory, and unallocated memory in the computer system; receiving a request for allocating discretionary memory to one of the processes; in response to the request, determining, using an allocation policy, whether to allocate discretionary memory to the one process; in response to determining to allocate the discretionary memory to the one process, allocating the discretionary memory to the one process; determining, based on a reclamation policy, that at least a portion of discretionary memory allocated to at least one of the processes should be reclaimed; and in response to determining that at least a portion of discretionary memory should be reclaimed, requesting reclamation of at least a portion of discretionary memory from at least one of the plurality of processes, wherein the stationary memory is allocated memory of the memory in the computer system that is required by a process and that is not subject to reclamation by the memory broker function unless the allocated memory has been discarded by the process to which the memory is allocated and wherein the discretionary memory is allocated memory of the memory in the computer system that is subject to reclamation by the memory broker function even if the allocated memory has not been discarded by the process to which the memory is allocated, and wherein the reclamation policy considers process inertia values that indicate how resistant a process is to changing its memory usage.