Memory suballocator performance was improved when searching for a list (known to exist) with available space. The memory suballocator is designed to improve the use of smaller chunks of memory. We found that performance slowed while using a memory file. Profiling suggested a loop in a method that finds an existing “list” of memory objects with one or more available for reuse, or allocates a new list of memory objects was a contention point
When a request for a memory object of a particular type (or size range) is made to the memory suballocator, any available object is first returned (of the same type or size range). If none exists, a new list of memory objects is allocated and the list made the active list. A subsequent request for a memory object is then satisfied from the current active list until all of its memory objects have been used.
Improved list management was implemented allowing quicker searching into multiple lists removing the prior contention points.