1. A system comprising: a processor; and a memory including code stored therein that, when executed, performs a method of memory management comprising: receiving a memory management data structure including a tree structure and a first list, the tree structure including one or more nodes, wherein each of the one or more nodes represents a free memory portion of a particular size used as a key value for said each node, said tree structure being organized in accordance with one or more key values of the one or more nodes such that, for a first of the one or more nodes having a first key value, each other node of the tree structure having a key value less than the first key value of the first node is included in a left subtree of the first node, and each other node of the tree structure having a key value more than the first key value of the first node is included in a right subtree of the first node; and the first list representing a memory map of memory addresses corresponding to different memory portions, the first list including one or more entries, each of the one or more entries representing a memory portion that has an associated memory address range, wherein each entry of the first list denotes either an allocated memory portion including only allocated memory or otherwise denotes a free memory portion including only available memory, wherein each entry of the first list representing a free memory portion is associated with a node of the tree structure; receiving a first request to allocate a first portion of memory of a first size; searching the tree structure to determine a first free memory portion from which to allocate memory for the first request; and updating the memory management data structure in accordance with allocating memory from the first free memory portion for the first request.