2012-07-18 23 views
0

我想在我的應用程序具有的功能如下解決內存不足:固定字節的內存溢出的Android

public byte[] processByteArray (int bits) throws OutofMemoryError { 
    byte [] arr =new byte [bits]; 
    //do something and 
    return arr; 
} 

我不知道什麼用戶提供價值位,因此得到異常的Dalvik說536870812字節分配超過67108864字節的最大堆大小。

所以,我做了這樣的事情這是不好的,但現在解決問題:

聲明ARR私下類和訪問裏面的功能是這樣的:

 public byte[] processByteArray (int bits) throws OutofMemoryError { 
    if(bits<=67108864) { 
     byte [] arr =new byte [bits]; //tell me if this is right..! 
     } 
    //do something and 
    return arr; 
} 

我不是當然我怎麼能解決這個問題,我想知道最大限制字節[] arr可以在我的函數中,我的意思是我想知道在新的字節[位]參數,「位」限制; 。請教育我..任何建議,將不勝感激。謝謝。

回答

1

您應該使用getMemoryClass()來找到限制,而不是分配幻數。

+0

謝謝,但我需要知道最大限制字節[] arr可以在我的功能。 – 2012-07-18 21:12:25

+0

的確,使用'getMemoryClass()'確定堆大小,然後將其用作限制。每個手機的堆都會有所不同。 – 2012-07-18 21:13:49

+0

很棒,但這是一堂課,我不會從任何東西中消費。我將如何訪問這裏面的ActivityManager。 – 2012-07-18 21:29:34