Study Learn Grow
Garbage Collection Algorithms

Garbage Collection Algorithms


You allocate objects manually, however, don’t bother with their deallocation: a special program, garbage collector, knows how to automatically deallocate them correctly, and reclaim them for future reuse.

Overview

Description
Memory leaks and dangling pointers are the main issues of manual memory management. You delete a parent node in a linked list, forgetting to delete all its children first - and your memory is leaking. You delete an object chain in the correct order - but suddenly your program crashes since you forgot about the second owner of this resource, which now tries to dereference a null-pointer.

To avoid these issues, most of the modern high-level programming languages implement automatic memory management. You allocate objects manually, however, don’t bother with their deallocation: a special program, garbage collector, knows how to automatically deallocate them correctly, and reclaim them for future reuse.

In the Garbage Collection Algorithms class, we study all different techniques and algorithms related to automatic memory management, which are used today in practice.

Who this class is for?

First of all, for compiler engineers.

In implementing your programming language, there is a very high chance you’ll need to implement a garbage collector. Even languages that initially were positioned as “memory-safe”, such as Rust, eventually implemented automatic reference counting (ARC) and other collectors.

To reiterate: in most of the modern high-level programming languages, a garbage collector module (or multiple GC modules, like in Java) is pretty much a requirement today.

What if I don't implement programming languages every day?

If you are not a compiler engineer, then the class can still be interesting for you. Implementing a garbage collector or a memory manager, in general, is a pretty advanced engineering task. It's a simple trick: you take some complex project (such as a garbage collector, compiler, interpreter, etc), and while building it, you learn all different data structures and algorithms. And then come back to "every-day programming", improved as a better engineer, with the transferable generic knowledge of complex systems.

Do I need C or C++ for this project?

Not really! Of course, C and C++ are probably the best languages for raw memory manipulations and fit well here, however, in the course we study generic design algorithms and focus mainly on theoretical aspects of garbage collectors and memory allocators. This means you can implement them in any language you want. For example, you can allocate an `ArrayBuffer` in JavaScript for a virtual heap, or a similar byte array in Python, Rust, etc.
Most of the algorithms in the course are described in generic pseudo-code, so you can port them to any language.
What's specific in this class?

The main things of these lectures are:

Concise and straight to the point. Each lecture is self-sufficient, concise, and describes information directly related to the topic, not distracting on unrelated materials or talks.
Animated presentation combined with live-editing notes. This makes an understanding of the topics easier and shows how (and when at the time) the object structures are connected. Static slides simply don’t work for complex content.
I hope you enjoy this class and make the topic of Automatic memory management more clear and easier in implementing your programming language!

Basic knowledge
Basic data structures and algorithms (trees, graphs, linked lists, etc)
Basic knowledge about computer memory (bytes, addresses, pointers)

Course Information

Basic data structures and algorithms (trees, graphs, linked lists, etc)
Basic knowledge about computer memory (bytes, addresses, pointers)

Algorithms and data structures behind Automatic Memory Management in computer programs.
Memory management history: Static, Stack, Heap allocations
Virtual memory and Memory Layout
Tracing vs. Direct collectors
Semantic vs. Syntactic garbage
Mark-Sweep garbage collector
Mark-Compact collector
Reference counting collector
Copying collector
Generational collector
Parallel, Incremental, Concurrent collectors
Tri-color abstraction and marking
GC Barriers

Compiler engineers
All curious engineers, willing to implement a complex project to learn different memory management algorithms

• Lifetime Access to Each Course
• Certificate on Completion of Course
• No Extra Charges Or Admin Fees
• Easy Access to Courses
• High Priority Support After Sales.
• Big Discounts on Individual Courses

Course Specifications

Plan your future in engineering with courses including MSc Engineering Management.

See All Courses

Adult education is the non-credential activity of gaining skills and improved education. 

See All Courses

Online education is electronically supported learning that relies on the Internet for teacher/student interaction. 

See All Courses

A short course is a learning programme that gives you combined content or specific skills training in a short period of time. Short courses often lean towards the more practical side of things and have less theory than a university course – this gives you a more hands-on experience within your field of interest.

See All Courses

Course duration is 24 hours.

See All Courses

Study Learn Grow

Related Jobs