簡単なプロジェクト用の NDK プロトタイプを開発しました。コードはコンパイルされ、デバイスとシミュレーターで動作します。ただし、携帯電話の設定メニューを見ると (Samsung Galaxy Nexus (Android 4.2.2)、Samsung Gio (Android 2.3.6))、Gio でアプリを実行すると、アプリを実行したときよりも多くのスペースが必要になります。ギャラクシーネクサス。また、次のコマンドは、GIO のはるかに高いヒープ割り当てを報告します。
System.out.println(Debug.getNativeHeapAllocatedSize() / 1049L);
多くの機能に静的ライブラリを使用しています。正確な結果は次のとおりです。
ネクサス:
- フットプリント (MB) (Java 実装)1.24
- フットプリント (MB) (C++ lib 実装)0.96
- メモリ割り当て (MB) (Java 実装) 1.6
- メモリ割り当て (MB) (C++ lib 実装) 1.5
ジオ:
- フットプリント (MB) (Java 実装)1.19
- フットプリント (MB) (C++ lib 実装)1.71
- メモリ割り当て (MB) (Java 実装) 4.6
- メモリ割り当て (MB) (C++ lib 実装) 5.5
このフットプリントとメモリ使用量の違いの理由は何ですか?
(iOS デバイス (C++ lib) で割り当てを測定すると、Galaxy Nexus とほぼ同じ結果が 3GS で得られます)。