I remember working on a product that was rewritten to be partially in Java partially in C++ (because Java wasn't fast enough). By the end of it, I pointed out that they could have ported it once (from Unix to Windows) and it would have taken less time.
This is an example of how you can use logical arguments to say something really stupid. Just because you can imagine a program that runs for the expected lifespan of a computer yet doesn't fill up the address space doesn't mean that I can't imagine a program able to fill even a 64 bit address space within a very short amount of time.
I've seen this before many times. 99% of the time, your program probably can rely on a badly implemented reference count GC. But there's this one percent of the time where you need to pierce through all of the layers of abstraction and really grasp what's going on. This is why computer science programs that teach Java will always be inferior to programs that force students to program some level of assembler and C.
I worked for a company that NEEDED to integrate with Excel. We always joked that the two people who knew the deep and nasty details of Excel weren't allowed to be on the same aircraft. (They both left the company within a year or two of each other, thus proving the importance of watching one's truck count. But that's another story)
I'm not done yet... so my benchmark that used to take 7.3 seconds now takes 5.2 seconds (so, only 40% faster,
but that does include the time spent loading all of the libraries) but I'm part way through removing all of
the REXML out of my formatting code in Rm and replacing it with