国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#內存管理優化實踐

2019-11-14 15:46:27
字體:
來源:轉載
供稿:網友

    內存優化暢想系列文章已經結束了,很多讀者讀完之后可能覺得“然并卵”,畢竟都是給微軟提的建議而已,現在都沒有實現。那么為了優化內存,有沒有什么我們現在就能用的技巧呢?我的答案是:有。網上關于.net內存優化的文章有許多,我不想一一轉載,這里只介紹兩個我自己想到的方法,如有雷同,純屬巧合。當然,我只是.net的業余愛好者,實踐經驗有限,所說的方法也只是理論分析得出的而已,并未經過實際測試驗證,所以也未必正確,歡迎讀者批評指正。

1. 即使是“垃圾”對象之間的互相引用,也應(在其成為垃圾之前)盡可能解除。可能有人認為這樣做沒有必要,因為都是垃圾對象了,下次GC時就都會被釋放了,它們之間存在互相引用,又有什么關系呢?這種想法忽略了一個事實----GC是分代進行的。如果一個1代或2代的垃圾對象保有一個0代垃圾對象的引用,那么下次發生0代GC時,這個0代垃圾是不會被回收的,要等到1代或2代GC時才會跟引用它的垃圾一起回收。這就導致了本該盡早回收的對象真正被回收的時間晚了許多,年輕代的回收不徹底,可能無法釋放足夠的內存,進而引發更多次的GC。

2. 巧用弱引用緩存對象。使用弱引用實現緩存最合適了,能夠自動根據內存壓力釋放緩存對象,取得平衡。保存對某些垃圾對象的弱引用,可以在GC之前隨時“從垃圾里撿出寶貝”,實現“廢物利用”,使得真正分配對象的次數減少,能夠大大減輕GC的壓力,降低內存“占用率”的同時提高內存“利用率”。這里就不展開詳說了,等有時間我打算寫一個弱引用緩存類,供大家研究。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 淮安市| 栾川县| 定兴县| 兖州市| 万州区| 曲水县| 高台县| 闵行区| 兰州市| 灵武市| 民权县| 田阳县| 黔江区| 古蔺县| 新安县| 乐陵市| 甘德县| 公主岭市| 富源县| 洪雅县| 中西区| 华池县| 慈利县| 南木林县| 资中县| 和顺县| 涡阳县| 德阳市| 临夏县| 托里县| 商都县| 沐川县| 化德县| 广汉市| 五寨县| 永善县| 崇信县| 同江市| 恭城| 嘉鱼县| 西峡县|