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

首頁 > 學院 > 開發(fā)設計 > 正文

基礎才是重中之重~多線程的代價~我的內存都被吃了!

2019-11-17 02:32:09
字體:
來源:轉載
供稿:網友

基礎才是重中之重~多線程的代價~我的內存都被吃了!

回到目錄

異步操作是.net4.5推出的新名詞,事實上,這東西早就有了,它歸根結底是通過線程池來實現(xiàn)的,即將一個大任務分成多個小任何塊,每個線程并行處理其中的一個,完成后再把結果告訴主線程,在.net4.5推出后,這種技術得到了封裝,讓開發(fā)人員實現(xiàn)起來更加方便了,但是,并發(fā)(導步,多線程)并不是在哪里都適用的,使用不當,可能出現(xiàn)很多嚴重的后果!

看我的程序,這家伙已經占到了2.6G的內存空間了,很可怕吧!

出現(xiàn)這種問題的原因就是我沒有把線程這東西搞清楚,在一個調用密集的環(huán)境里,使用了多線程,要知道,這種線程,線程池里會有N多個線程的,處理的速度我沒有覺得提升,反而內存吃的很嚴重,這個原因就是因為你的工作線程太多的緣故

所以,多線程,并行,異步這些東西不是在哪都適用的,在調用密集時就能用它,因為它會吃你很多內存,如果非要用,請你把線程池的最大數限制一下,這個值可以控制在10以內。

下面是多線程吃內存的例子

          while (true)            {               // ThreadPool.SetMaxThreads(10, 10);//限制最大工作線程和i/o線程                ThreadPool.QueueUserWorkItem(new WaitCallback((a) =>                {                    ConcurrentDictionary<string, SendingResult> test2 = new ConcurrentDictionary<string, SendingResult>();                    test2.TryAdd(Guid.NewGuid().ToString(), new SendingResult                     {                         BatchNumber = Guid.NewGuid().ToString(),                         DbName = "zzl",                         EndId = 1,                         StartId = 1,                         TableName = "zzl",                         OccurDate = DateTime.Now,                     });                }));                if (DateTime.Now.Minute == 02)                {                    break;                }            }

查看一個任務管理器

當我把工作線程做了限制后,這種情況得到了改善

如果對于操作頻繁(輪訓服務)的工作,如果不使用多線程,反而根據不吃什么內存,性能反而更好!

感謝您的閱讀!

回到目錄


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东乌珠穆沁旗| 盐城市| 进贤县| 平利县| 绥滨县| 连平县| 松江区| 淮阳县| 甘德县| 全南县| 望城县| 新邵县| 响水县| 怀仁县| 宁城县| 博爱县| 开封县| 台北市| 增城市| 金寨县| 陇南市| 泰和县| 正宁县| 进贤县| 庆安县| 麻城市| 比如县| 隆子县| 杭锦旗| 隆林| 沙雅县| 英超| 庆阳市| 镇坪县| 嘉善县| 淅川县| 郴州市| 西乡县| 大港区| 巴林左旗| 自治县|