One problem with Java is, for the time being, the lack of proper value types.<p>Had a language like Eiffel, Oberon dialects or Modula-3 taken its role in the industry, I bet we wouldn&#x27;t be having this constant discussions of GC vs manual, in terms of performance.<p>Another issue, is that many developers even in languages with GC and value types, tend to be &quot;new() happy&quot; sometimes leading to designs that are very hard to refactor when the the need arises, given the differences in the type system between reference and value types.<p>Eiffel is probably the only one I can remember, where the difference is a simple attribute.