no deallocation occurs -- instead, the heap manager finds allocated blocks the program is no longer using and reclaims them automatically.
finds variables that are out of scope and destroys them, freeing the memory used by them.
what memory is no-longer referenced and frees it up