有没有一种好方法可以检查设备在 Java 中的总堆大小中有多少内存?我的应用程序是用 adobe air 编写的,它使用原生 Java 扩展从 SD 卡加载多个图像。我找到了这段代码来检查位图是否可以加载到内存中:
public boolean checkBitmapFitsInMemory(long bmpwidth,long bmpheight, int bmpdensity ){
long reqsize=bmpwidth*bmpheight*bmpdensity;
long allocNativeHeap = Debug.getNativeHeapAllocatedSize();
final long heapPad=(long)Math.max(4*1024*1024,Runtime.getRuntime().maxMemory()*0.1);
if ((reqsize + allocNativeHeap + heapPad) >= Runtime.getRuntime().maxMemory())
{
return false;
}
return true;
}
但是,在我的 Galaxy S2 上,它似乎被完全忽略了。也许是因为该应用程序由两部分组成 - 一是 Java,二是 adobe air。在将图像加载到应用程序内存之前,我应该检查其他内存值吗?谢谢!