&gt; &quot;new Object()&quot; takes up 16 bytes ....<p>Only in JVMs and AOT compilers that don&#x27;t do escape analysis.<p>Also don&#x27;t forget Smalltalk, which also only does references, was running in the Alto, Dolphin, and Dorado workstations.<p>For example the Dorado was:<p>- 128-512 kB<p>- 606x808 pixels<p>- 4 74181 CPUs<p>So how does that compare to a beefy Android device?<p>Also J2ME and Embedded Java are running quite well in many embedded platforms, in a few hundred KB steering soft real time systems like robots and missile radar controls.<p>So yes, Java might not offer all the memory control features that other GC enabled languages do, going back to Algol 68, Mesa&#x2F;Cedar, Eiffel, Modula-3, ....<p>But given the performance of commercial JVM vendors, I would say Google has a lot of blame as well.<p>EDIT: Forgot to add that when Java 10 comes out with value types and reified generics (according to the roadmap) this will become a moot point, except of course for Android Java given Google&#x27;s unwillingness to provide support for the real thing.