0
有沒有一種很好的方法來檢查整個堆大小中有多少內存在Java中具有該設備? 我的應用程序使用原生Java擴展從Adobe SD Card中加載多個圖像。我發現這段代碼來檢查位圖是否可以加載到內存中:檢查android堆大小
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。在將圖像加載到應用程序內存之前,應該檢查另一個內存值嗎? 謝謝!
感謝。我剛剛從Log中檢查了freeMemory(),它沒有任何意義。它隨着每個加載的圖像而改變,但有時它正在增長!在加載第一張圖片之前,它是1070032,加載20張圖片後是1698688.有點令人沮喪。 – Fossor
但這可能是事實。您的應用程序不是唯一使用內存的應用程序,是嗎? – Fildor
所以在我的情況下是不實際的。我需要知道操作系統將關閉我的應用與下載圖像加載到內存 – Fossor