If you're a sole programmer writing everything yourself, I'd be inclined to agree with you. Most work I see, however, involves significantly larger chunks than 40,000 LOC and coordination with other teams or contributors. C/C++ has no inherent unified memory management scheme, and so the patterns and responsibilities for memory management can vary widely between teams, libraries, or chunks of code. That is something that often gets overlooked when discussing Java memory management. Java GC has literally has made the coordination and use of library code very simple.