Python7 min read

Python Memory Management

Understand Python memory management and optimization.

David Miller
December 18, 2025
0.0k0

Manage memory efficiently.

Check Memory Usage

```python import sys

x = [1, 2, 3, 4, 5] print(sys.getsizeof(x)) # bytes

Compare y = (1, 2, 3, 4, 5) print(sys.getsizeof(y)) # Tuples smaller ```

Garbage Collection

```python import gc

Check if enabled print(gc.isenabled()) # True

Disable (careful!) gc.disable()

Enable gc.enable()

Force collection gc.collect() ```

Weak References

```python import weakref

class Data: def __init__(self, value): self.value = value

obj = Data(42) weak_ref = weakref.ref(obj)

print(weak_ref().value) # 42

del obj print(weak_ref()) # None (garbage collected) ```

__slots__ for Memory Saving

```python class Person: __slots__ = ['name', 'age'] def __init__(self, name, age): self.name = name self.age = age

Uses less memory than regular class person = Person("Tom", 25) ```

Memory Profiling

```python from memory_profiler import profile

@profile def memory_heavy(): data = [i ** 2 for i in range(1000000)] return sum(data)

memory_heavy() ```

Generator for Memory

```python # Bad - loads all in memory def get_numbers(): return [i for i in range(1000000)]

Good - one at a time def get_numbers_gen(): for i in range(1000000): yield i ```

Remember

- Python handles memory automatically - Use generators for large datasets - __slots__ reduces memory usage - Weak references prevent memory leaks

#Python#Advanced#Memory