我知道jvm中的GC會收集對象,一旦它發現對象是弱引用的,但有人說它可能花了幾次gc讓jvm找到弱引用對象,我真的不明白它,任何人都可以解釋它,或者告訴我這是真的嗎?謝謝!爲什麼需要幾次gc才能找到弱參考?
0
A
回答
0
是的,它需要一段時間才能銷燬對象。我不知道Java WeakReference有什麼問題或者它對性能的影響。
- 可能導致附加的垃圾收集
- 進行循環時,可以不知道。垃圾收集器在自己的後臺線程週期中工作。
- 在WeakReferences管理取決於執行JRE(如一切)的,也見Cost of using weak references in Java
有沒有辦法在Java和其他高級語言如C#例如手動銷燬對象。垃圾收集器做那件事。循環結束並銷燬沒有參照的對象(即強參照)。弱引用不會阻止垃圾收集器收集對象。參考類型之間的區別解釋如下:here on StackOverflow。
沒有辦法觸發收集週期。您可以通過System.gc()
戳垃圾收集器,但它不會立即執行並「需要多次」。
0
所有實際用途的垃圾收集都是不確定的。你根本無法預測它什麼時候會清理一些東西,如果它會導致你的應用暫時停頓等。大多數表現的很好。你不應該依賴基礎的gc動作或終結器。
相關問題
- 1. 在vs2010中需要添加什麼參考才能使用OpenGL?
- 2. 短弱參考和長弱參考之間有什麼區別?
- 3. 爲什麼我們需要捕獲lambda參考的參考?
- 4. 爲什麼iOS NSDefaults需要兩次啓動才能生效?
- 5. 爲什麼需要兩次點擊才能點擊ToolStripMenuItem?
- 6. 什麼是「弱框架參考」?
- 7. 我需要找到什麼設置才能解決此問題?
- 8. CUDA:nvcc需要幾分鐘才能編譯的原因是什麼?
- 9. 我需要調用UpdateModel什麼參考?
- 10. 部分更新...爲什麼需要2次刷新才能看到更改?
- 11. 爲什麼我需要按兩次按鈕才能第一次解散片段?
- 12. 爲什麼GAE開發服務器需要幾分鐘才能啓動?
- 13. Android需要什麼才能返回findViewById()?
- 14. 需要什麼才能使用db.scan()
- 15. 我需要做些什麼才能讓LiveConnect再次運作?
- 16. 爲什麼要包含/需要多次?
- 17. 爲什麼'testAndroidTestCaseSetupProperly`需要這麼長時間才能運行?
- 18. 這爲什麼需要這麼長時間才能運行?
- 19. JAVA GC主要GC與次要GC
- 20. 「弱參考」:腳踏實地解釋需要
- 21. 爲什麼參考變量需要在定義時初始化?
- 22. 爲什麼EF需要實體的ID以及參考
- 23. 爲什麼「istream&object」需要參考&ifstream不?
- 24. 爲什麼我需要輸入非char值兩次才能結束程序
- 25. 爲什麼上次讀取()需要很長時間才能返回
- 26. 掛鉤:爲什麼我們需要再次VirtualProtect()才能恢復權限?
- 27. 爲什麼我的Featherlight畫廊需要點擊兩次才能激活?
- 28. 爲什麼ASP.NET控件值更改需要2次回傳才能顯示?
- 29. Yii2。爲什麼我需要上傳兩次文件才能產生效果?
- 30. 爲什麼我需要在matlab中使用fopen兩次才能讀取圖像?