This may be a problem in Android's heap implementation:
http://androidxref.com/4.4.4_r1/xref/dalvik/vm/alloc/Heap.cpp
See comment in tryMalloc:
There will be a lot of churn if someone allocates a bunch of big objects in a row, and we hit the frag case each time. A full GC for each.