There is just so much wrong with your post and clearly a lot of ignorance and FUD.
Sources? Otherwise, it's just your random babbling on here vs. mine.
My sources - you know, just some of the millions of pages and print written on the subject:
http://stackoverflow.com/questions/6385285/why-doesnt-ios-have-automatic-garbage-collection
http://www.levelofindirection.com/journal/2010/8/13/we-dont-need-no-stinking-garbage-collection.html
http://www.drdobbs.com/mobile/automatic-reference-counting-on-ios/240000820
Oh, and how about the official apple documentation on memory management. Doesn't seem very much like "don't do manual memory management, leave it to the OS!" to me. Because the OS doesn't do it for you entirely at all.
http://developer.apple.com/library/...onceptual/MemoryMgmt/Articles/MemoryMgmt.html
Amongst plenty of others, if you have bothered to read any iOS development documentation, reviews of the developer kit, or actually learn to code for iOS, etc. There are entire chapters devoted to iOS memory management in objective-c - rather than "don't do manual memory management".
Garbage collection is expensive. Which is why apple doesn't do it on iOS (it was briefly supported in Xcode for OS X, but it is recommended you switch to ARC now). It is a big reason why Apple have been pushing the clang/llvm compiler toolchain, which enabled them to develop ARC to get most of the GC benefits without the performance cost.
Which is one reason why iOS runs better on similar spec/lower spec hardware.
But hey, apple don't innovate at all, right?
And i did not say there is ZERO native code on android. However, java is common. Whether or not a particular game is in java or not, a lot of the OS and background running apps probably are.
http://developer.android.com/guide/components/fundamentals.html
But hey, just spew "FUD!! FUD!!" because someone has said things you don't like about your sacred cow.
I've provided some references to back up my points, where the hell are yours?
Seems to me, the only FUD here is yours.
----------
Thanks for an insightful reply.
However, this begs another question. Can Google actually do something to remedy the above listed problems without having to completely recode Android, which, I'm guessing is simply not feasible.
As hardware advances, the penalties for Garbage collection and the JVM will likely decrease. As RAM costs come down, the penalty for JVM overhead will become less relevant.
They already have a highly optimised JVM (davlik) to try and alleviate these "problems" but they aren't really due to bad code or anything like that, they are just a different set of design trade-offs.
Apple demands apps be written in Objective-C along with all the issues associated with that in order to get better performance from less hardware.
Android provides the JVM to gain platform independence (no reason you can't have an x86 android phone, or MIPS or whatever, so long as the platform has a JVM all your java-based apps will run on it without even a re-compile), but loses a little performance (both due to running non-native bytecode, and the garbage collection Java does) to gain that flexibility.
Basically Android is less "idiot proof" and this places more of an onus on the end user to be selective about what apps to use... again, no different to desktop OS's.
On the contrary, the need to do manual memory management via retain/release on iOS and programming in Objective-C is a lot less "idiot proof" than being able to write apps in Java which eliminates things like pointers which cause application crashes when the programmer screws up.
ARC in recent versions fixes that to an extent - which i would wager is why there's still no jailbreak for iOS 6 out yet - because the code is being migrated from retain/release to ARC and less prone to exploitable bugs.