2013-10-14 42 views
1

我不知道不應該在android中使用System.gc()。在Android中,不應該使用System.gc()?

我搜索了開發文檔:

結果:

公共靜態無效的GC()

在API級別1指示到VM,這將是一個很好的時間 運行垃圾收集器。請注意,這只是一個提示。有 不能保證垃圾回收器會實際運行。

並找到參考信息。此網址: http://code.google.com/p/android/issues/detail?id=8488#c80

但這是很久以前。

如果使用位圖,請使用bitmap.recycle()。但複雜的意見,如何gc?

現在,這個問題沒有解決?並從來沒有使用System.gc()?

+6

如果沒有System.gc(),你的代碼應該可以正常工作。如果你認爲你必須使用它,改變你的代碼, – tolgap

+0

正如你所說的,你不應該調用'System.gc()',它會在系統需要釋放內存時調用,如果你希望你可以null你未使用的分配可能釋放內存。 – kabuto178

+0

爲什麼你想GC複雜的觀點?除非你實際上得到了OOM異常或類似的東西,否則你永遠不應該干涉操作系統及其垃圾收集,即使有OOM異常,你也可以在沒有做自己的垃圾收集的情況下解決這個問題...... – Darwind

回答

2

調用System.gc()不是實際執行垃圾回收的保證。這比別的更重要。

在一般的Java編程中,使用這種方法調用被認爲是非常糟糕的做法,因爲使用它意味着垃圾收集發生的某種程度的期望。實際上,發生垃圾收集取決於很多事情,最好留給容器和運行時調優(如果需要)。

因爲所有相同的原因,我會說在Android中不使用System.gc()

+0

工具欄中的後退按鈕似乎自動調用'System.gc()',因爲它釋放內存,而真正的後退按鈕則不會,即使在按下按鈕時調用了'bitmap.recycle()'和'finish()'後, 。只有'System.gc()'實際上釋放了我設備中的內存。 –

相關問題