Episode 18: Reference Counting
Description
After we talked about memory allocation in Python back in Episode 16, we're ready to complain, uh, explain reference counting. Or at least throw a bunch of reference counting facts at you. Plus a big assortment of recent Python changes. You ready?
## Timestamps
(00:00:00 ) INTRO
(00:04:17 ) PART 0: SPORTS NEWS
(00:06:53 ) PART 1: REFERENCE COUNTING
(00:08:28 ) New segment of 2025
(00:13:54 ) C++ is asymptotic Python
(00:15:37 ) Is Rust game yet?
(00:18:01 ) Names
(00:20:25 ) Breaking the law
(00:23:08 ) sys.getrefcount()
(00:25:21 ) Pedantic Pablo
(00:26:06 ) sys.gettotalrefcount()
(00:31:24 ) TraceRefs
(00:33:28 ) Advantages of refcounting
(00:36:16 ) Disadvantages of refcounting
(00:38:40 ) Reference cycles
(00:40:39 ) Multithreading
(00:41:25 ) When refcounting goes wrong
(00:44:05 ) Freeing memory in Python doesn't return it to the OS
(00:45:42 ) Leaks and cycles redux
(00:50:29 ) Double free
(00:53:05 ) Avoiding reference counting
(00:54:59 ) Immortal objects
(01:00:40 ) PART 2: WHAT'S GOING ON IN CPYTHON
(01:02:43 ) New features
(01:04:11 ) Assorted interesting changes
(01:15:23 ) Performance
(01:18:09 ) Free-threading changes galore
(01:27:02 ) AsyncIO
(01:34:25 ) Windows changes
(01:36:45 ) Security
(01:37:20 ) OUTRO