你好我正在做一些运行时计算来获取NativeHeap内存并在运行时分配内存,所以任何人都可以建议我
“Debug.getNativeHeapAllocatedSize()”和“Runtime.getRuntime()。totalMemory()”
之间的区别应该是什么?因此可以通过OutOf Memory Exception来阻止app。
由于
答案 0 :(得分:1)
Runtime.getRuntime().totalMemory()
返回正在运行的程序可用的内存总量。
getNativeHeapAllocatedSize()
对于HoneyComb以下的设备,大多数巨大的分配都会延迟到本机堆(例如Bitmaps)。因此,这个api有助于找出分配了多少本机堆。
当没有可以被DVM释放的对象时,会发生OOM错误。通常,你可以在堆中使用大约16MB(对于标准手机)。检查your logs*以查看GC语句,其中包含有关内存分配量的信息。
我认为不应该有固定比率导致OOM错误。就像你加载一个非常大的位图的情况一样,这里使用的本机内存是巨大的。