Memory management
Memory management is the activity of managing computer memory. In the context of programming languages it means providing means of storing individual objects in a memory space provided by the underlying system. Usually, a memory management system allocates small objects in one or more big contiguous memory spaces while also holding its book-keeping data structures there. Memory management can be manual, where the programmer explicitly calls allocation/deallocation routines or automatic where the system automatically determines which objects are no longer accessible by the program and safely removes them.