Androidの1つのアプリが使用可能なメモリ量っていくらなんでしょう。
私の理解ではメモリに「Dalvikヒープ」と「Nativeヒープ」が存在し(合わせたヒープを仮にアプリヒープと呼ぶ)、その合計(アプリヒープ)が一定の量を超えてはならないと思っています。
つまりあるメモリ量をDalvikヒープとNativeヒープが分け合っている状態です。
Android2.3系で、Dalvikヒープをある程度使用した状態で、ByteBuffer.allocateDirect()を繰り返してNativeヒープを消費し続けたところ

確かにDalvikヒープとNativeヒープの合計がmaxを超えるところでOutOfMemoryが発生します。
maxと言っても、ここで表示しているmaxは
Runtime.getRuntime().maxMemory()
の値です。
つまりDalvikヒープの最大量だと思われます。。。。じゃアプリ最大ヒープ量はいくらなの・・? =Dalvik最大ヒープ量?
もう一つ疑問があります。
Nativeを今度はallocateDirectではなく、実際にndkでCを使ってmallocし続けたところ

今度はmaxを超えて確保し続けても落ちることがありません。恐らくLinuxヒープを使っているのかいくらでも確保できます。
じゃここに表示されているNativeヒープ(Debug.getNativeHeapSize())は何?
結局1つのアプリでいくらメモリが使えるのかよく分からんとです・・・。
テストに使ったアプリのソースコードをここにアップします。
http://dixq.net/blog/13.07.25/memorytest.zip