レイアウトに3ListView
つと 1 つをロードしました。EditText
をタッチするEditText
と、キーボードが開きます。その時点で、次のコードを使用してメモリ サイズを確認します。
Runtime rt = Runtime.getRuntime();
long vmAlloc = rt.totalMemory() - rt.freeMemory();
long nativeAlloc = Debug.getNativeHeapAllocatedSize();
Log.d("Memory",className+"Maximum : "+formatMemoeryText(rt.maxMemory()));
Log.d("Memory",className+"VM Heap : "+formatMemoeryText(rt.totalMemory()));
Log.d("Memory",className+"NativHeap : "+formatMemoeryText(Debug.getNativeHeapSize()));
Log.d("Memory",className+"VM (A) : "+formatMemoeryText(vmAlloc));
Log.d("Memory",className+"Nati(A) : "+formatMemoeryText(nativeAlloc));
Log.d("Memory",className+"TotalAll : "+formatMemoeryText(nativeAlloc+vmAlloc));
Log.d("Memory", "----------------------------------------------------");
キーボードが開くたびに、ネイティブ ヒープ サイズが増加します。最終的にアプリは強制終了します。
私はもう試した:
System.gc();
Runtime.getRuntime().gc();
ただし、約0.5〜1MBしか減少しません。次回キーボードを開くと、20〜30MB増加します。
アプリがネイティブ ヒープ メモリを閉じたりクリアしたりしないようにするにはどうすればよいですか?