Start here. This is the direct spoken answer to practice first.
Overview
Separates Python allocation growth from process RSS, native memory, fragmentation, caches, and workload peaks.
I confirm whether memory grows per process, with traffic, after a deployment, or only during a specific job. RSS shows the operating system view of resident process memory, while tracemalloc tracks many Python allocations and can compare snapshots by traceback. If RSS grows but traced Python memory does not, I investigate native extensions, allocator fragmentation, memory-mapped files, thread stacks, or child processes. One high watermark is not automatically a leak.