回答
正確。實際上,是沒有垃圾回收器方法(System.gc()
是一個提示,現在可能是垃圾回收的好時機,但沒有其他)。如果JVM實現垃圾收集(以及所有的Java SE和Java EE),它將根據自己的規則進行收集,這些規則通常包括同時清理短暫對象,並在內存開始變慢時進行主要收集,或者支離破碎。
雖然在一般情況下調用System.gc()
被認爲是壞的,壞的,壞的,非常糟糕的做法,在某些情況下,這可能會防止內存不足錯誤。這主要是當你快速連續分配大量對象並且有時間的時候,其中許多對象不再被引用並且可以被刪除。雖然System.gc()
只是一個提示,但有時系統可能需要此提示。或者,你可能會重新考慮你的算法。
然而,對於較新的Java版本,這些情況越來越少;過去常常比較頻繁。官方的觀點是從來沒有手動調用垃圾收集器。
調用'System.gc()'是*可以接受*的另一種情況是,當您嘗試進行微基準測試*並且不希望GC在中間啓動時(測量時) – TheLostMind 2014-09-29 05:36:20
System.gc()方法不一定會調用垃圾收集器。垃圾收集取決於JVM的實現。例如,當你做一個Windows JVM可能沒有的System.gc()時,Linux JVM實際上可能會調用GC。
假設你有太多無法訪問內存中的對象,但是你仍然有足夠的堆空間,所以JVM可能決定不運行GC線程。所以結論「沒有保證GC線程在你調用System.gc()時運行,並且不需要調用它。」
這是Java的主要優勢之一,開發人員不必擔心內存管理和內容。不像C++,你必須做類似
free(obj);
- 1. Java垃圾收集算法
- 2. 方法和垃圾收集
- 3. 垃圾收集java
- 4. Java垃圾收集
- 5. Java垃圾收集
- 6. 垃圾收集器和finalize()方法
- 7. 垃圾收集器
- 8. Java垃圾收集時間?
- 9. Java垃圾收集問題
- 10. Java垃圾收集和空
- 11. 的Java newSingleThreadExecutor垃圾收集
- 12. Java垃圾收集場景
- 13. 垃圾收集
- 14. 執行Java垃圾收集器
- 15. 什麼觸發java垃圾收集器
- 16. Java垃圾收集器邏輯查詢
- 17. Java之後的垃圾收集器null
- 18. JAVA中的垃圾收集器sp
- 19. C有垃圾收集器像Java嗎?
- 20. 如何禁用Java垃圾收集器?
- 21. 智能Java編譯器垃圾收集
- 22. Java垃圾收集器澄清
- 23. Java 8的默認垃圾收集器
- 24. Renderscript和垃圾收集器
- 25. 垃圾收集器閃存
- 26. 垃圾收集器asp.net
- 27. Node.js的垃圾收集器
- 28. 垃圾收集器vs池
- 29. .NET垃圾收集器
- 30. 垃圾收集器Flash Player
你引用了什麼來源? – 2014-12-17 21:14:47