J2ME實踐:避免OutOfMemoryError

來源:互聯網
上載者:User

對於MIDP應用程式來說,由於手機裝置上的資源非常有限,較弱的CPU計算能力,有限的記憶體(從幾十KB到幾百KB,雖然少數高端手機擁有超過1M的動態記憶體),很小的螢幕尺寸,因此,為了讓一個MIDP應用程式能夠不加改動地在多種不同手機上運行,程式必須有能力根據系統配置自動調整運行時的參數。比如,對於記憶體非常小的手機,如果從網路下載一幅較大的映像,需要分配巨大的緩衝區,就可能導致OutOfMemoryError錯誤,使應用程式直接終止,這會使使用者感到不知所措,或者丟失使用者的重要資料。

因此,在試圖分配一塊大記憶體之前,首先使用System.gc()嘗試讓垃圾收集器釋放無用對象佔用的記憶體,然後,使用Runtime.getRuntime().freeMemory()方法獲得可用的記憶體空間。如果可用空間太小,給使用者一個“記憶體不足,無法完成操作”的Alert提示,從而儘可能地避免OutOfMemoryError錯誤。

// 範例程式碼:
System.gc();
int max_size = 102400; // 100KB
int free_size = (int)Runtime.getRuntime().freeMemory();
if(max_size>free_size*2/3) {
// TODO: Alert!
}
else {
byte[] buffer = new byte[max_size];
// TODO: Download image...
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.