Garbage Collection Algorithms For Automatic Dynamic Memory Management