国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 无锡市| 巢湖市| 辛集市| 桐柏县| 曲水县| 玛沁县| 公安县| 汉阴县| 云林县| 汽车| 会昌县| 贵溪市| 瑞金市| 莱芜市| 礼泉县| 措勤县| 延庆县| 德江县| 香格里拉县| 什邡市| 长沙市| 开化县| 闻喜县| 合作市| 崇义县| 东兰县| 多伦县| 社旗县| 登封市| 江达县| 沽源县| 武乡县| 乾安县| 青阳县| 都匀市| 崇明县| 东乡族自治县| 凭祥市| 比如县| 子洲县| 甘孜|