RT
付訓作業,轉來C#不久,做了個程式,持續的在分析資料。
任務管理器里 看到 程式在記憶體漲到300多M的記憶體的時候,記憶體會下降到200多M,然后再漲到300多M后 再降到200多M,周而復始...
上司(不是專業做程式的,多少知道點東西吧),問我 記憶體使用能不能降降。他問我 為什么 漲100多M的時候 會回收,為什么回收了 100多M而不是200多M。
我一下子蒙了,就只說了 動態分配記憶體 回收得看GC 具體無法確定回收的時間和大小 之類的...
他說了一些 要對記憶體有足夠的把握,不能任由GC去搞 之類的話...
于是來問問大家:GC回收記憶體的 時機 和 大小 是怎么確定的?能不能自己配置?
任何講解、資料、文章、鏈接 都歡迎,先謝謝大家了 !!
uj5u.com熱心網友回復:
那你手動 Dispose或者解構式。uj5u.com熱心網友回復:
主要是 這個 申請釋放記憶體 比較頻繁,我個人認為,頻繁的申請釋放記憶體 又要弄個記憶體池了,還不如直接 讓GC幫我管理比較方便......
uj5u.com熱心網友回復:
你要對記憶體有足夠的掌控,用C++啊,都自己控制。或者開啟一個執行緒,監聽行程使用情況,超過一個閥值比如250M,強制GC.Conlect()
uj5u.com熱心網友回復:
沒啥用,垃圾回識訓制不是那么淺顯使用代碼就好使的.你可以這樣試驗.
一個集合變數一直add 到幾萬幾十萬.
然后你在給他賦值null或者clear 你看記憶體有變化嗎.
或者你手動GC,看看效果就知道了.
uj5u.com熱心網友回復:
本來GC的出現,
就是為了讓程式員不用關心記憶體的釋放問題。。。
uj5u.com熱心網友回復:
垃圾回收有自己的判斷機制在里面,想自己手動去配置,是不太現實的。給你推薦一本書先看看吧。
《CLR via C#(第4版)》 第21章 托管堆和垃圾回收 有很詳細的描述。
uj5u.com熱心網友回復:
那你手動 Dispose或者解構式。
主要是 這個 申請釋放記憶體 比較頻繁,我個人認為,頻繁的申請釋放記憶體 又要弄個記憶體池了,還不如直接 讓GC幫我管理比較方便......
本來GC的出現,
就是為了讓程式員不用關心記憶體的釋放問題。。。
本來就是啊,哎 我等底層員工 伺候主子不易啊
uj5u.com熱心網友回復:
C#一般是自動清收,你需要做的就是把你使用的變數清空,系統會自動處理的,函式內的區域變數就不用操心了,出了函式就不用管了uj5u.com熱心網友回復:
可以呼叫GC.Collect()強制回收不過絕大部分情況,沒必要手動這么做 300M記憶體占用不是什么大不了的
uj5u.com熱心網友回復:
狗拿耗子
uj5u.com熱心網友回復:
gc不是自己就處理了嗎。。 如果你要就自己手動釋放唄轉載請註明出處,本文鏈接:https://www.uj5u.com/net/122635.html
標籤:C#
