Memory Management: Garbage Collection vs. Reference Counting

July 26, 2020 · 8 min read

Tags: BASICS | RECENT

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Justo laoreet sit amet cursus sit amet dictum sit amet. Purus semper eget duis at tellus at urna condimentum mattis. Neque viverra justo nec ultrices dui sapien eget mi. Ultrices dui sapien eget mi proin sed libero enim sed. Lectus arcu bibendum at varius vel pharetra vel turpis nunc. Ultrices tincidunt arcu non sodales neque sodales. Rhoncus dolor purus non enim praesent elementum facilisis leo. Montes nascetur ridiculus mus mauris. Malesuada fames ac turpis egestas sed tempus urna et. Lectus mauris ultrices eros in cursus. Ultrices vitae auctor eu augue ut. Malesuada proin libero nunc consequat interdum varius sit. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim cras. Semper feugiat nibh sed pulvinar proin gravida hendrerit lectus a. Nam aliquam sem et tortor consequat id. Dolor magna eget est lorem ipsum dolor. Ultrices sagittis orci a scelerisque purus semper eget duis at.

Background

Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Nisl suscipit adipiscing bibendum est ultricies integer. Convallis posuere morbi leo urna molestie at elementum. Ipsum dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Massa vitae tortor condimentum lacinia quis vel. Lectus sit amet est placerat in egestas erat imperdiet. Aliquam nulla facilisi cras fermentum odio eu. Tempus imperdiet nulla malesuada pellentesque. Tempor id eu nisl nunc mi ipsum. Turpis egestas pretium aenean pharetra magna ac placerat. Adipiscing at in tellus integer feugiat scelerisque.

Molestie ac feugiat sed lectus vestibulum. Duis convallis convallis tellus id interdum velit laoreet. Enim sit amet venenatis urna cursus eget nunc scelerisque viverra. Vitae sapien pellentesque habitant morbi tristique. Purus semper eget duis at tellus. Ut tellus elementum sagittis vitae et leo duis ut. In nibh mauris cursus mattis molestie a iaculis. Pellentesque dignissim enim sit amet. Vitae tortor condimentum lacinia quis vel. Mi quis hendrerit dolor magna. Tellus in metus vulputate eu scelerisque. Vitae auctor eu augue ut lectus arcu bibendum. Eget egestas purus viverra accumsan in nisl nisi. Lorem ipsum dolor sit amet consectetur adipiscing. Tortor at auctor urna nunc id cursus metus aliquam eleifend. Sed turpis tincidunt id aliquet risus feugiat in ante metus. Lacus luctus accumsan tortor posuere ac ut consequat.

The Heap and References

Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Nisl suscipit adipiscing bibendum est ultricies integer. Convallis posuere morbi leo urna molestie at elementum. Ipsum dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Massa vitae tortor condimentum lacinia quis vel. Lectus sit amet est placerat in egestas erat imperdiet. Aliquam nulla facilisi cras fermentum odio eu. Tempus imperdiet nulla malesuada pellentesque. Tempor id eu nisl nunc mi ipsum. Turpis egestas pretium aenean pharetra magna ac placerat. Adipiscing at in tellus integer feugiat scelerisque.

Figure 1. The Heap and Stack.

Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Nisl suscipit adipiscing bibendum est ultricies integer. Convallis posuere morbi leo urna molestie at elementum. Ipsum dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Massa vitae tortor condimentum lacinia quis vel. Lectus sit amet est placerat in egestas erat imperdiet. Aliquam nulla facilisi cras fermentum odio eu. Tempus imperdiet nulla malesuada pellentesque. Tempor id eu nisl nunc mi ipsum. Turpis egestas pretium aenean pharetra magna ac placerat. Adipiscing at in tellus integer feugiat scelerisque.

Garbage Collection

Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Nisl suscipit adipiscing bibendum est ultricies integer. Convallis posuere morbi leo urna molestie at elementum. Ipsum dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Massa vitae tortor condimentum lacinia quis vel. Lectus sit amet est placerat in egestas erat imperdiet. Aliquam nulla facilisi cras fermentum odio eu. Tempus imperdiet nulla malesuada pellentesque. Tempor id eu nisl nunc mi ipsum. Turpis egestas pretium aenean pharetra magna ac placerat. Adipiscing at in tellus integer feugiat scelerisque.

Mark and Sweep

Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Nisl suscipit adipiscing bibendum est ultricies integer. Convallis posuere morbi leo urna molestie at elementum. Ipsum dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Massa vitae tortor condimentum lacinia quis vel. Lectus sit amet est placerat in egestas erat imperdiet. Aliquam nulla facilisi cras fermentum odio eu. Tempus imperdiet nulla malesuada pellentesque. Tempor id eu nisl nunc mi ipsum. Turpis egestas pretium aenean pharetra magna ac placerat. Adipiscing at in tellus integer feugiat scelerisque.

Consequat mauris nunc congue nisi. Tortor condimentum lacinia quis vel eros donec. Sed augue lacus viverra vitae congue eu. Nunc lobortis mattis aliquam faucibus purus in massa. Condimentum vitae sapien pellentesque habitant morbi tristique senectus et netus. Turpis egestas maecenas pharetra convallis posuere morbi leo. Urna cursus eget nunc scelerisque. Lacus vestibulum sed arcu non. Non sodales neque sodales ut etiam sit amet nisl. Netus et malesuada fames ac. Phasellus faucibus scelerisque eleifend donec pretium vulputate sapien. Elementum integer enim neque volutpat ac. Dolor sed viverra ipsum nunc. Velit egestas dui id ornare. Tempor id eu nisl nunc mi. Semper risus in hendrerit gravida. Morbi non arcu risus quis.

GC Roots

Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Nisl suscipit adipiscing bibendum est ultricies integer. Convallis posuere morbi leo urna molestie at elementum. Ipsum dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Massa vitae tortor condimentum lacinia quis vel. Lectus sit amet est placerat in egestas erat imperdiet. Aliquam nulla facilisi cras fermentum odio eu. Tempus imperdiet nulla malesuada pellentesque. Tempor id eu nisl nunc mi ipsum. Turpis egestas pretium aenean pharetra magna ac placerat. Adipiscing at in tellus integer feugiat scelerisque.

Consequat mauris nunc congue nisi. Tortor condimentum lacinia quis vel eros donec. Sed augue lacus viverra vitae congue eu. Nunc lobortis mattis aliquam faucibus purus in massa. Condimentum vitae sapien pellentesque habitant morbi tristique senectus et netus. Turpis egestas maecenas pharetra convallis posuere morbi leo. Urna cursus eget nunc scelerisque. Lacus vestibulum sed arcu non. Non sodales neque sodales ut etiam sit amet nisl. Netus et malesuada fames ac. Phasellus faucibus scelerisque eleifend donec pretium vulputate sapien. Elementum integer enim neque volutpat ac. Dolor sed viverra ipsum nunc. Velit egestas dui id ornare. Tempor id eu nisl nunc mi. Semper risus in hendrerit gravida. Morbi non arcu risus quis.

Figure 2. GC Roots in the Heap.

Massa vitae tortor condimentum lacinia quis vel. Lectus sit amet est placerat in egestas erat imperdiet. Aliquam nulla facilisi cras fermentum odio eu. Tempus imperdiet nulla malesuada pellentesque. Tempor id eu nisl nunc mi ipsum. Turpis egestas pretium aenean pharetra magna ac placerat. Adipiscing at in tellus integer feugiat scelerisque.

Drawbacks

Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Nisl suscipit adipiscing bibendum est ultricies integer. Convallis posuere morbi leo urna molestie at elementum. Ipsum dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Massa vitae tortor condimentum lacinia quis vel. Lectus sit amet est placerat in egestas erat imperdiet. Aliquam nulla facilisi cras fermentum odio eu. Tempus imperdiet nulla malesuada pellentesque. Tempor id eu nisl nunc mi ipsum. Turpis egestas pretium aenean pharetra magna ac placerat. Adipiscing at in tellus integer feugiat scelerisque.

Consequat mauris nunc congue nisi. Tortor condimentum lacinia quis vel eros donec. Sed augue lacus viverra vitae congue eu. Nunc lobortis mattis aliquam faucibus purus in massa. Condimentum vitae sapien pellentesque habitant morbi tristique senectus et netus. Turpis egestas maecenas pharetra convallis posuere morbi leo. Urna cursus eget nunc scelerisque. Lacus vestibulum sed arcu non. Non sodales neque sodales ut etiam sit amet nisl. Netus et malesuada fames ac. Phasellus faucibus scelerisque eleifend donec pretium vulputate sapien. Elementum integer enim neque volutpat ac. Dolor sed viverra ipsum nunc. Velit egestas dui id ornare. Tempor id eu nisl nunc mi. Semper risus in hendrerit gravida. Morbi non arcu risus quis.

Automatic Reference Counting (ARC)

Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Nisl suscipit adipiscing bibendum est ultricies integer. Convallis posuere morbi leo urna molestie at elementum. Ipsum dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Massa vitae tortor condimentum lacinia quis vel. Lectus sit amet est placerat in egestas erat imperdiet. Aliquam nulla facilisi cras fermentum odio eu. Tempus imperdiet nulla malesuada pellentesque. Tempor id eu nisl nunc mi ipsum. Turpis egestas pretium aenean pharetra magna ac placerat. Adipiscing at in tellus integer feugiat scelerisque.

Weak and Strong References

Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Nisl suscipit adipiscing bibendum est ultricies integer. Convallis posuere morbi leo urna molestie at elementum. Ipsum dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Massa vitae tortor condimentum lacinia quis vel. Lectus sit amet est placerat in egestas erat imperdiet. Aliquam nulla facilisi cras fermentum odio eu. Tempus imperdiet nulla malesuada pellentesque. Tempor id eu nisl nunc mi ipsum. Turpis egestas pretium aenean pharetra magna ac placerat. Adipiscing at in tellus integer feugiat scelerisque.

Consequat mauris nunc congue nisi. Tortor condimentum lacinia quis vel eros donec. Sed augue lacus viverra vitae congue eu. Nunc lobortis mattis aliquam faucibus purus in massa. Condimentum vitae sapien pellentesque habitant morbi tristique senectus et netus. Turpis egestas maecenas pharetra convallis posuere morbi leo. Urna cursus eget nunc scelerisque. Lacus vestibulum sed arcu non. Non sodales neque sodales ut etiam sit amet nisl. Netus et malesuada fames ac. Phasellus faucibus scelerisque eleifend donec pretium vulputate sapien. Elementum integer enim neque volutpat ac. Dolor sed viverra ipsum nunc. Velit egestas dui id ornare. Tempor id eu nisl nunc mi. Semper risus in hendrerit gravida. Morbi non arcu risus quis.

Figure 3. Object references in Swift.

Drawbacks

Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Nisl suscipit adipiscing bibendum est ultricies integer. Convallis posuere morbi leo urna molestie at elementum. Ipsum dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Massa vitae tortor condimentum lacinia quis vel. Lectus sit amet est placerat in egestas erat imperdiet. Aliquam nulla facilisi cras fermentum odio eu. Tempus imperdiet nulla malesuada pellentesque. Tempor id eu nisl nunc mi ipsum. Turpis egestas pretium aenean pharetra magna ac placerat. Adipiscing at in tellus integer feugiat scelerisque.

Consequat mauris nunc congue nisi. Tortor condimentum lacinia quis vel eros donec. Sed augue lacus viverra vitae congue eu. Nunc lobortis mattis aliquam faucibus purus in massa. Condimentum vitae sapien pellentesque habitant morbi tristique senectus et netus. Turpis egestas maecenas pharetra convallis posuere morbi leo. Urna cursus eget nunc scelerisque. Lacus vestibulum sed arcu non. Non sodales neque sodales ut etiam sit amet nisl. Netus et malesuada fames ac. Phasellus faucibus scelerisque eleifend donec pretium vulputate sapien. Elementum integer enim neque volutpat ac. Dolor sed viverra ipsum nunc. Velit egestas dui id ornare. Tempor id eu nisl nunc mi. Semper risus in hendrerit gravida. Morbi non arcu risus quis.

Conclusion

Tellus elementum sagittis vitae et leo duis ut diam quam. Odio pellentesque diam volutpat commodo sed. Arcu cursus euismod quis viverra nibh cras pulvinar mattis. Iaculis urna id volutpat lacus. Nec ullamcorper sit amet risus nullam eget felis eget nunc. Dui id ornare arcu odio ut sem. Felis eget nunc lobortis mattis aliquam faucibus purus. Posuere lorem ipsum dolor sit. Nec feugiat in fermentum posuere urna nec tincidunt praesent semper. Commodo sed egestas egestas fringilla. Odio ut sem nulla pharetra diam sit amet. Fusce ut placerat orci nulla pellentesque dignissim. Metus aliquam eleifend mi in nulla posuere sollicitudin. Vulputate ut pharetra sit amet aliquam id. Turpis egestas pretium aenean pharetra magna. Eget velit aliquet sagittis id consectetur purus. Volutpat maecenas volutpat blandit aliquam etiam erat. Lobortis feugiat vivamus at augue eget arcu. Et ultrices neque ornare aenean euismod elementum. Tristique senectus et netus et malesuada fames ac turpis.

Gravida dictum fusce ut placerat orci nulla pellentesque. Dignissim convallis aenean et tortor at risus viverra adipiscing. Cursus sit amet dictum sit amet justo donec. Et netus et malesuada fames ac turpis egestas maecenas pharetra. Nisl purus in mollis nunc sed id. Posuere sollicitudin aliquam ultrices sagittis. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Morbi tempus iaculis urna id. Urna id volutpat lacus laoreet non curabitur gravida arcu ac. Sit amet dictum sit amet justo donec enim diam vulputate.

Dean Foster

Dean Foster is an undergraduate CS student at the University of Maryland, College Park. He has personal and volunteer experience in Mobile Application Development, and is currently making the transition into Web Development, with an emphasis in Backend. A design enthusiast with a passion for making, he’s excited to help build tomorrow’s solutions for today’s most pressing problems.

Github LinkedIn