On Fri, Feb 25, 2011 at 8:31 AM, spaceraiders wrote:
> 1. Why was the decision made to not enforce the same limitations on
> NDK code?
>
It is much harder to enforce on native code.
> 2. What are the implications of rewriting apps that use the NDK to
> allocate, say, double the regular Java heap limit? I've done some
> experiments and e.g. using 40Mb on a phone with 256Mb RAM and a Java
> heap limit of 24Mb doesn't seem to cause any noticeable problems.
> Background apps start getting killed when you use a lot more memory
> though.
>
If you aren't careful in native code, your app will simply be silently
killed on you.
> 3. Are there any plans to increase the Java heap limit? Seeing as
> phones are now getting >=512Mb RAM, giving less than 10% of this to
> the foreground app seems an odd limitation.
>
The heap size is larger in HC.
> I've noticed apps on the market that say they require 256Mb RAM to run
> (!) so other developers are definitely taking advantage of the NDK in
> this way. I much prefer coding in Java but the memory limit makes
> certain apps very tough to write so sticking to Java makes it hard to
> compete with developers that use the NDK.
>
It's up to you whether you want to stay within the limit or risk issues like
your app suddenly disappearing on the user.
You can use the onLowMemory() callback to help you determine when you are
starting to allocate too much memory. The browser uses this for example to
know when it really needs to flush its caches. HOWEVER, you should NOT be
relying on that as the only way to control your allocations, since it
happens when the device is really getting low on memory to the point of not
being able to keep any background processes running, so things like app
switching are already being impacted by your memory use.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support, and so won't reply to such e-mails. All such
questions should be posted on public forums, where I and others can see and
answer them.
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en