我已經閱讀了關於明確地使垃圾收集的對象,在很多方面。所以我想知道一些明確垃圾收集的方法使對象明確垃圾回收的方法
回答
System.gc是告訴JVM明確執行垃圾回收器。
但對於一些方法我知道,使顯式垃圾回收的對象是:
分配其引用,以指向空 EX:動物A =新的動物(); a = null
將其引用指定爲指向另一個對象。 EX:動物a1 =新動物(); a1 = new Animal();
將對象的所有引用賦值爲'null',僅使對象準備好被垃圾收集。它不會立即將垃圾收集起來,而且之後可以長時間保存在內存中。調用'System.gc()'也不能保證所有未被引用的對象都被收集。閱讀其他答案。 – MAK 2010-02-04 19:50:50
沒有辦法顯式垃圾收集。
可以「禮貌地詢問」虛擬機做垃圾收集致電:
System.gc();
,但它不能保證它會的。
調用gc方法建議Java虛擬機花費大量的工作來回收未使用的對象,以便使其當前佔用的內存可供快速重用。當控制從方法調用返回時,Java虛擬機已盡最大努力從所有被丟棄的對象中回收空間。
和「盡力而爲」可能是推遲垃圾收集。
對於如何創建一個對象符合使用垃圾收集閱讀Effective Java, Chapter 2
我喜歡「盡力而爲」一詞。這意味着「也許,如果我喜歡它」。 – 2010-02-04 19:48:34
您可以通過所有引用設置爲它null
明確地使垃圾收集對象資格。
這不會調用垃圾收集器本身,但是當收集開始時,它將收集此對象。
你最好讓Java垃圾收集器自動完成它。它已經被優化到能比任何你想要做的更好,更高效的地步。
除非你自己寫一個像VisualVM這樣的工具,否則你不應該擔心強制GC。
NetBeans,IntelliJ,VisualVM和很多其他人都可以使用GC,而不是提示,但是確實有效。使用JVMTI你可以強制GC。
但是再一次你可能做不是想要做到這一點。
您強制使用JVMTI的ForceGarbageCollection的GC(而不是提示)。
這就是說,你可能真的不要想要做到這一點(它真的是重複)。
上,如果你真的想知道(但你可能不)如何給力,一個事實,一個GC主題權威信息:
http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#ForceGarbageCollection
- 1. 從RMI方法返回的空對象的垃圾回收
- 2. 在對話框中使用聲明以確保垃圾回收
- 3. 內部對象的垃圾回收
- 4. Ruby:標記垃圾回收的對象
- 5. 有資格垃圾回收的對象
- 6. 因垃圾對象引用而導致的java垃圾回收
- 7. 垃圾收集器如何確定對象是否是垃圾?
- 8. 垃圾收集對象
- 9. 私人方法調用垃圾回收
- 10. 方法和垃圾收集
- 11. JDBC垃圾回收
- 12. Java:垃圾回收
- 13. C#垃圾回收
- 14. Java:垃圾回收
- 15. Erlang垃圾回收
- 16. java垃圾回收
- 17. Python垃圾回收
- 18. JS垃圾回收
- 19. Javascript垃圾回收
- 20. PhoneGap垃圾回收
- 21. java - 垃圾回收
- 22. 查找C#垃圾回收器回收了多少個對象
- 23. Android垃圾回收器,釋放對象內的對象
- 24. 在Java中垃圾收集對象的方法
- 25. Android的垃圾收集對象
- 26. Perl中的垃圾回收
- 27. Java - 可用的垃圾回收算法
- 28. 如何使用反射垃圾回收來生成對象?
- 29. 在構造函數中聲明的C#對象的垃圾回收
- 30. 垃圾收集資格對象
語言和實現你指的是什麼?這裏有很多的GC語言,每個實現都可以自由添加自己的非標準功能。 – 2010-02-04 19:42:30
對不起。但是我只選擇了一個標籤java。它意味着它與Java語言相關 – GuruKulki 2010-02-05 18:34:57