A very good post, but like much discussion here it turns into a comparison of Java vs. C++. It would be good to also compare to Go, which is GCed, but gives you all the value types of C++. The value types of Go are probably the reason that they have so good GC performance (version 1.6+) without all the complexity of the hotspot GC.