Python Memory Management and Tips Transcripts
Chapter: Course conclusion and review
Lecture: Reference counting
Login or
purchase this course
to watch this video and the rest of the course contents.
0:00
The flip side of allocating memory is we're gonna have to clean it up.
0:02
So you saw the primary way for
0:05
the vast majority of objects in Python, that this is done, is through reference counting.
0:10
Everything in Python is a PyObject pointer and allocated on the heap is a PyObject.
0:15
And we pulled up just a tiny bit here of the code from "object.h".
0:20
The most important part around this is that there's this thing called "ob ref count" that
0:25
is like either 32 bit or 64 bit or whatever it happens to be here.
0:30
We've got this special type here that every single thing derives from and it basically just
0:36
has this place for how many variables refer to it.
0:40
And that works almost all the time.
0:42
We've got a couple of variables.
0:44
One of them goes away and the count goes down.
0:47
If that count ever reaches zero, immediately
0:50
that thing is deleted. And by deleted,
0:53
We don't mean necessarily the memory is given back to the operating system.
0:57
Remember, we have the blocks,
0:59
we have the pools, and we have the arenas.
1:01
What it means is the space in the block is now free to accept another object
1:06
of that size of its small.
1:08
If its large, it probably is immediately deleted and given back to the operating system.
1:12
Again, if you want to see this, bit.ly/cpythonobject.