Python Memory Management

This article is about how memory is managed within Python.

TODO : https://realpython.com/python-memory-management/

A Problem from Bloomberg Interview:
There is a class called Car, and a function called create_car to create and return an instance, where do we store the instance? When it’s returned and assigned to a variable, where is the variable?

Source Code:

class Car():
    def __init__(self):
        doors = 5
        seats = 4

def create_car():
    benz = Car()
    print(hex(id(benz)))
    return benz

my_benz = create_car()
print(hex(id(my_benz)))

Output:

0x100d60c88
0x100d60c88

As we can see, the memory addresses are the same. Benz is a variable (instance) that was created in the Heap, and Benz is a reference to that instance, when the function finished, the reference is returned and assigned to my_benz. So my_benz should still be a reference to the instance that we created.

Three Mechanisms in Python Memory Management:

(1) Garbage Recycle

(2) Reference Counter

(3) Memory Layers

Reference

Memory Management in Python: https://realpython.com/python-memory-management/