Android NDK: Dalvik Heap and Native Heap - How Separate Between the two
android, android-ndk, dalvik, memory
Solution
The native heap is managed by `dlmalloc()`, which uses a combination of `mmap()` and standard calls like `sbrk()` to allocate memory. The managed ("Dalvik") heap is (mostly) one large chunk allocated with `mmap()`. It's all running on top of the Linux kernel, so if you understand Linux memory management then you already know how the lower-level parts work.
You can read more about how Dalvik returns empty pages from the managed heap to the OS in this post.
Edit: the canonical post for information about Android memory management is this one. I don't think it directly answers your question, but it has a lot of good information and links to informative sites.
Problem
I know there's Dalvik(JVM) heap and Native heap in an android platform. And the Dalvik GC has no work on native heap. But I'm not sure how this work, I mean how the Android OS separate them? possible situation 1: composed by separate memory hardware (I don't believe much) possible situation 2: Android OS has FIXED amount of memory for both heap possible situation 3: Android OS has to allocate part of Dalvik memory heap to become native heap when necessary, and so the size of native heap and Dalvik heap is flexible. Which one is true, or possibility that I didn't mention?