How do you go from writing an apologia with explicit admissions that the JVM is suboptimal to "so when you add everything up and also consider JVM monitoring, I think that for most large, performance-wary application, choosing anything but the JVM requires explanation. The JVM is pretty much the default choice."
I've nothing against the JVM and Java per se, notwithstanding integration and compatibility issues, just like I've nothing against using Perl or Fortran.
But it's worth pointing out that people who use proprietary systems--which unfortunately must include Java since the only high-performance examples are proprietary--perceive only the very best inside the black box they're presented. They're handed a bunch of, say, atomic or threading primitives and think, "hey, my vendor chose this so it must be the best algorithm, and they must have implemented it in the sanest, more performant manner possible". And you _have_ to think that way because the only alternative is to become bitter and unenthusiastic about something you have to use day-in and day-out.
The biggest pain regarding Java is GC and unix integration. Neither of those will ever be better than plain C or C++. It's not even worth arguing about. Either they matter or they don't matter, for the most part.