2011-10-02 27 views
1

我正在開發J2ME中的移動應用程序。在這裏我正面臨記憶問題。我面臨的內存不足錯誤。所以請給出關於它如何擺脫J2ME中的這種錯誤/異常,垃圾回收,內存管理的想法。J2ME中「System.gc()」的作用是什麼?

我有一個疑問,在J2ME中System.gc()有什麼影響。 J2ME/Java中的System.gc()Runtime.getRuntime().gc()有什麼區別?

感謝&問候,

+0

據我所知,這些應該手動垃圾收集。但是仍然不能保證jvm會在你請求時真正​​做到這一點。 –

+0

另外檢查這個問題http://stackoverflow.com/questions/66540/system-gc-in-java –

回答

3

調用System.gc()將不會修復「OutOfMemoryError」。一個OOME只發生在系統嘗試通過垃圾收集(和其他方式)釋放內存並且未能釋放足夠的內存以繼續執行之後才發生。

修復OOME錯誤的方法是找出正在使用所有內存的內容,並嘗試做一些事情。

,可導致OOMEs可能的問題包括:

  • 內存泄漏;即應用中的某些內容導致大量對象在不再需要時仍保持「可達」狀態。

  • 內存飢餓的數據結構或算法。

  • 沒有足夠的內存來運行具有該輸入數據的應用程序。

第一步解決這個問題應該是使用一個分析器,看看是否有任何顯著泄漏,並找出更普遍的數據結構所使用的所有內存的內容。

0

System.gc()的調用Runtime.getRuntime()GC ()是等同的。他們建議垃圾收集,但不能保證這實際上會發生。

所以,不要依賴它,事實上,你很想調用它,這是非常罕見的。

相關問題