The autorelease optimization actually regularly breaks, because not even the compiler engineers remember it exists, and it relies on libraries tall-calling -autorelease which they also forget to do.
Even without it, there isn't a pausing problem because you can clear the pool at the end of the runloop tick, when the app is idle anyway.