1. A method in a computer system for allocating memory to threads of an application, the method comprising: providing a heap for tracking free tokens of memory, the tokens having a fixed token size, the heap for tracking collections of free tokens of different collection sizes; receiving memory requests from threads of the application, each memory request having a type of allocate or de-allocate; and when memory requests are pending concurrently from multiple threads, combining memory requests of the same type; and under control of one of the threads, updating the heap based on the combined memory request so that the heap need be only updated once for a combination of memory requests.