GC是什麼時候運行的?它是否像是在一定的時間間隔內運行,或者當應用程序需要內存或什麼?GC何時運行?
GC何時運行?
回答
簡答:當需要時。
較長的答案:
- 當分配不能兌現
- 當一個AppDomain被卸載
- 當Windows報告內存不足
- 當GC.Collect的叫
此外,定稿可能會在GC後的某個時間點運行。
它是特定於實現的,這意味着即使你知道這些規則,你也不應該在它們周圍構建任何東西。它可能在未來發生變化。實際上,我認爲管理內存管理的研究很可能不是很長的一段時間。 – 2010-09-24 07:36:21
@Lasse:好點,所以我想這個建議只是堅持簡短的答案。 – 2010-09-24 07:38:06
是的,我認爲這個答案的必然結果是「,這就是你需要知道的。」 – 2010-09-24 09:29:14
從MSFT(見鏈接查看更多細節):
.NET框架的垃圾回收器 管理您的應用程序分配和 內存釋放。每次您創建一個新對象 時,常見的 語言運行時將爲託管堆中的對象分配內存。由於地址空間在 託管堆中可用,因此 繼續爲新的 對象分配空間。但是,內存不是無限的 。垃圾 收集器必須執行收集 爲了釋放一些內存。垃圾 收集者的優化引擎 根據分配 確定執行收集的最佳時間,其中 正在進行。當垃圾收集器 執行收集時,它會檢查 應用程序不再使用的託管堆中的對象 ,並執行必要的 操作以收回其內存以回收其內存。
1. .NET Framework的垃圾收集器管理您的應用程序的內存分配和釋放。
- 每次創建對象時,運行時間分配 內存從託管堆中的對象。 3.垃圾回收器必須按 的順序執行收集以釋放一些內存。垃圾收集器的優化 引擎根據所做的分配確定執行收集的最佳時間, 。 4.當垃圾收集器執行收集時,其 將檢查託管堆中不再有 被應用程序使用的對象,並執行必要的 操作來收回其內存。
- 1. 優化GC運行時間
- 2. 運行時常量池GC收集
- 3. adobe AIR:阻止GC運行
- 4. 安全運行git gc
- 5. Android GC注意事項 - GC何時運行,並且可以從代碼跟蹤其運行狀態?
- 6. 如何防止git gc在提取時自動運行
- 7. GC正在使用Java長時間運行的計時器
- 8. 完整的GC - Sun JVM運行頻率
- 9. 錯誤而運行git GC --aggressive
- 10. Java GC運行調整影響
- 11. 如果permgen填滿,GC會運行嗎?
- 12. 「git gc」是否也運行「git repack」?
- 13. 什麼導致完整的GC運行?
- 14. 運行時單聲道人類可讀的GC統計信息
- 15. 針對少量和長時間GC運行的JVM調優
- 16. 運行時間太長,對於GC偏斜
- 17. BIRT運行時錯誤 - java.lang.OutOfMemoryError:超出GC開銷限制
- 18. 的Java SoftReference的,panicing GC和GC行爲
- 19. 小GC和全GC在同一時間?
- 20. Hotspot的清除GC停止運行,只留下標記掃描GC
- 21. 不能運行git gc ..任何解決方案?
- 22. 如何檢測併發GC是否正在運行.Net
- 23. Java CMS GC行爲
- 24. Android的GC行爲
- 25. GC vs GC SuspendedEE
- 26. Java GC日誌行之間有什麼區別? (「總共歷時......」 VS「[GC」)
- 27. NSURLSession何時運行?
- 28. ADT:在庫庫運行項目時,GC開銷達到上限文件夾
- 29. .NET 4.5:.NET運行時的內部錯誤(80131506)/禁用併發的GC
- 30. 我可以在運行時設置Java GC日誌文件(-Xloggc :)嗎?
就我所知,有一種確定GC是否即將運行的方法。反正也不容易。 – 2010-09-24 07:29:58
@Matt:您可以註冊完整的GC通知。見http://msdn.microsoft.com/en-us/library/system.gc.registerforfullgcnotification.aspx – 2010-09-24 07:44:38
@Brian Rasmussen:謝謝!我不知道那件事。 – 2010-09-24 08:06:18