Ruby's garbage collector reclaims objects inside the Ruby heap but does not shrink the process by returning memory to the operating system. As a consequence, measuring RSS over time shows a process that only grows or plateaus — making it impossible to distinguish a true memory leak from memory bloat by looking at OS-level memory alone. Hence the need for heap-dump-based analysis.