爲什麼要Graphics
需要處置? 也是Pen
和SolidBrush
?爲什麼需要處理圖形?
回答
那麼簡單的答案是他們實施'IDisposable',所以他們需要處置。
稍長的答案是它們消耗需要釋放的非託管資源。通過直接調用dispose(或使用'using'語句),您可以釋放這些資源,而不是等GC爲您完成。
這些對象是非託管資源(特別是GDI +對象)的包裝。如果這些對象沒有明確處理,那麼GC需要調用它們的終結器。這將延遲爲其他GC回收資源。*這意味着您的應用程序將使用更多的資源。
更新:澄清的措詞加上... *當GC遇到帶終結器的對象時 - 假定GC.SuppressFinalize()尚未在Dispose()方法中調用 - 它將終結器排隊以運行在未來某個時間在終結者線程上。對象所使用的內存和資源因此保持到至少在當前運行的GC之後。
如果我沒有使用dipose方法怎麼辦?有沒有某種內存泄漏? – Rye 2010-11-16 04:00:49
凱文你的答案似乎表示,如果你明確地處理對象,應用程序將使用比必要的更多的資源。那是你真正想說的嗎? – 2010-11-16 04:00:59
@Rye。不,沒有內存泄漏。 GC將最終發佈非託管資源。直到fReachable處理完成纔會發生。這比對象的範圍長。 – 2010-11-16 04:02:25
- 1. 爲什麼sensorManager.registerListener需要處理程序?
- 2. c#什麼需要處理時間?
- 3. 爲什麼我需要保留管理對象才能處理?
- 4. 什麼時候處理圖形對象
- 5. OpenGL:爲什麼方形紋理需要更少的內存
- 6. 爲什麼realloc需要兩個指針?處理返回NULL?
- 7. 爲什麼我們需要瞬態故障處理存儲?
- 8. 爲什麼RuntimeException不需要顯式異常處理?
- 9. 爲什麼需要處理消息的碎片
- 10. 爲什麼我們需要Http處理程序?
- 11. 爲什麼WCF需要DTC處理事務流?
- 12. 需要知道爲什麼核心文件已基因處理
- 13. 爲什麼多處理器系統需要禁用中斷
- 14. sigaction - 爲什麼我們不需要重置處理程序?
- 15. 爲什麼你需要特別瞭解每個處理器?
- 16. 爲什麼islower()和朋友需要處理EOF?
- 17. 爲什麼waitpid在信號處理程序中需要循環?
- 18. 爲什麼需要代理鍵?
- 19. 爲什麼需要管理員權限?
- 20. 爲什麼物理Web需要位置?
- 21. 爲什麼需要
- 22. 爲什麼需要「{} \」?
- 23. 需要處理
- 24. 爲什麼意圖需要上下文?
- 25. 爲什麼'視圖'需要被複制?
- 26. 爲什麼iOS需要啓動圖像?
- 27. 爲什麼需要視圖源功能
- 28. 我們爲什麼需要,使用貓鼬有什麼好處
- 29. 爲什麼我需要Symfony formbuilder?有什麼好處?
- 30. 理解發生了什麼,爲什麼你需要代表和視圖來源
似乎我的問題是錯誤的。它應該是託管和非託管資源。這就是爲什麼我不能在谷歌找到它。 :) – Rye 2010-11-16 04:12:55
是啊谷歌是真棒,除非你不能找出正確的關鍵字來觸發一些體面的結果。 – 2010-11-16 04:15:42
感謝您的解釋。 – Rye 2010-11-16 04:18:22