In addition to above question,
Maximum dvm heap size limits external heap and gc heap.
Because of external heap plus gc heap can't exceed dvm max heap size.
Is there any reason to limit external heap size? (about Bitmap object)
When we use a user defined JNI native method.
and JNI native method use a native heap using malloc().
In this case, native heap usage is not tracked by dvm.
These means native heap usage could exceed dvm max heap size.
If the android want to limit the total dvm heap size.
then they have to track all usage of malloc in the JNI native call
stack.
But, now they are only tracking graphic JNI native api for Bitmap
object.