Memory Allocation and Garbage Collection