In this talk, I describe how to design memory managers that support high-performance applications. I first address the software engineering challenges of building efficient memory managers. I then show how current general-purpose memory managers do not scale on multiprocessors, cause false sharing of heap objects, and systematically leak memory. I describe a fast, provably scalable general-purpose memory manager that solves these problems, improving performance by up to a factor of 60. Finally, I show how to support server applications that must tear down memory associated with terminated connections or transactions. I present a generalization of regions and heaps called reaps that supports teardown with higher performance and lower memory consumption than current approaches.