亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

查看w3wp進程占用的內存及.NET內存泄露,死鎖分析

2019-11-17 01:56:57
字體:
來源:轉載
供稿:網友

查看w3wp進程占用的內存及.NET內存泄露,死鎖分析

一 基礎知識

在分析之前,先上一張圖:

從上面可以看到,這個w3wp進程占用了376M內存,啟動了54個線程。

在使用windbg查看之前,看到的進程含有 *32 字樣,意思是在64位機器上已32位方式運行w3wp進程。這個可以通過查看IIS application Pool 的高級選項進行設置:

好了,接下打開Windbg看看這個w3wp進程占用了376M內存,啟動的54個線程。

1. 加載 WinDbg SOS 擴展命令

.load C:/Windows/Microsoft.NET/Framework/v2.0.50727/sos.dll

2. !dumpheap -stat

!DumpHeap 將遍歷 GC 堆對對象進行分析。

MT Count TotalSize Class Name78eb9834 1 12 System.ServiceModel.ServiceHostingEnvironment+HostingManager+ExtensionHelper

0118c800 101 14824 Free...63ce0004 19841 1111096 System.Reflection.RuntimeMethodInfo63ce2ee4 11080 2061036 System.Int32[]63ce0d48 34628 2242596 System.String63ce37b8 20012 3264884 System.Byte[]63cb4518 157645 4940676 System.Object[]Total 524310 objects

可以看到,w3wp上總共有524310個對象, 共占用了這些內存。

我們可以將上述上述列出的這些對象歸為2類:

1). 有根對象(在應用程序中對這些對象存在引用)

2). 自從上次垃圾回收之后新創建或無跟對象

要注意的是Free這項:

0118c800 101 14824 Free

這項一般都是GC not yet Compacted的空間或一些堆上分配的禁止GC compacted釘扣對象.

第一欄 : 類型的方法列表 MT(method type for the type)

第二欄:堆上的對象數量

第三欄:所有同類對象的總大小

3. !dumpheap -mt 63ce0d48

查看 63ce0d48單元的有哪些對象。

4. !do 103b3360

看看103b3360地址的string包含哪些內容

可見,103b3360地址的字符串value="System.Web.UI.PageRequestManager:AsyncPostBackError", 占120bytes. 這個字符串對象包含3個字段,它們的偏移量分別是4,8,12。

5. dd 103b3360

看看103b3360的值

從左往右第一列是地址,而第二列開始則是地址上的數據。

6. !dumpheap -type String -min 100

看看堆上所有大于100字節的字符串。 注意:假如 -min 85000(大于85000字節的字符串或對象將存儲在大對象堆上).

二. NET內存泄露分析案例

1 基礎認識

.net世界里,GC是負責垃圾回收的,但GC僅僅是回收哪些不可及的對象(無根對象),對于有應用的有根對象,GC對此無能為力。

.net一些內存泄漏的根本原因:

  • 使用靜態引用
  • 未退訂的事件-作者認為這是最常見的內存泄漏原因
  • 未退訂的靜態事件
  • 未調用Dispose方法
  • 使用不徹底的Dispose方法
  • 在Windows Forms中對BindingSource的誤用
  • 未在WorkItem/CAB上調用Remove

一些避免內存泄漏的建議:

  • 對象的創建者或擁有者負責銷毀對象,而不是使用者
  • 當不再需要一個事件訂閱者時退訂此事件,為確保安全可以在Dispose方法中退訂
  • 當對象不再觸發事件時,應該將對象設為null來移除所有的事件訂閱者
  • 當模型和視圖引用同一個對象時,推薦給視圖傳遞一個此對象的克隆,以防止無法追蹤誰在使用哪個對象
  • 對系統資源的訪問應該包裝在using塊中,這將在代碼執行后強制執行Dispose

對這些做基本了解后,我們將步入正題。

2. 案例分析

先上測試代碼:

 1 public class LeakTest 2     { 3         PRivate static string leakString; 4  5         public LeakTest() 6         { 7             for (int i = 0; i < 1000; i++) 8             { 9                 leakString += "LEAK";10             }11         }12 13         public string GetRamdonString()14         {15             System.Random random = new System.Random();16 17             string str = string.Empty;18             for (int i = 0; i < 25; i++)19             {20                 str += str + random.Next(100);21             }22             return str;23         }24 25         public void NoDispose()26         {27             string str = GetRamdonString();28             29             ZipFile zip = new ZipFile();30             zip.AddEntry("a.txt", str);31             zip.AddEntry("b.txt", str);32             zip.Save("test.rar");33             //zip.Dispose();34         }35     }36 37     class Program38     {39         static void Main(string[] args)40         {41             LeakTest leakTest = new LeakTest();42             leakTest.NoDispose();43             Console.ReadLine();44         }45     }
View Code

需要說明的是:

這里程序里面定義了一個Static 字符串,及使用了Ionic.Zip 這個Zip壓縮包,僅僅是為了模擬內存堆積現象,沒有調用zip.Dispose()方法,事實上Ionic.Zip并不會造成內存泄露。

正式開始了:

啊哈,好極了。 運行程序,好家伙,果然很耗費內存! 這么個小程序,吃了287M,并啟動了12個線程.

0:005> .load C:/Windows/Microsoft.NET/Framework64/v2.0.50727/sos.dll0:005> .load C:/Symbols/sosex_64/sosex.dll

0:005> !dumpheap -stat

 1 0:012> !dumpheap -stat 2 PDB symbol for mscorwks.dll not loaded 3 total 12840 objects 4 Statistics: 5               MT    Count    TotalSize Class Name 6 000007ff001d2248        1           24 System.Collections.Generic.Dictionary`2+ValueCollection[[System.String, mscorlib],[Ionic.Zip.ZipEntry, Ionic.Zip.Reduced]] 7 000007ff000534f0        1           24 ZipTest.LeakTest 8 000007fee951e8e8        1           24 System.IO.TextReader+NullTextReader 9 000007fee94f8198        1           24 System.Security.Cryptography.RNGCryptoServiceProvider11 ...43 000007ff001d9130     1041        66624 Ionic.Zlib.DeflateManager+CompressFunc44 000007fee94d2d40     1023        73656 System.Threading.ExecutionContext45 000007fee951e038     3075      1387592 System.UInt32[]46 000007fee951ca10     3179      2450704 System.Int16[]47 0000000000207800      261     67034512      Free48 000007fee94d7d90      514    134251544 System.String49 000007fee94dfdd0      102    138593344 System.Byte[]50 Total 12840 objects

果然,我們看到了里面有2類大對象,分別占用了134M和138M . 好家伙!

0:005> !dumpheap -mt

  1 0:012> !dumpheap -mt 000007fee94dfdd0        2          Address               MT     Size  3...    24 00000000026f11f0 000007fee94dfdd0    65560      25 0000000002701288 000007fee94dfdd0    65560      26 00000000027112a0 000007fee94dfdd0    65592      27 0000000002722b50 000007fee94dfdd0    65560      28 0000000002752b98 000007fee94dfdd0    65560      29 ...     47 000000000290ab98 000007fee94dfdd0    65560      48 000000000293abe0 000007fee94dfdd0    65560      49 ...      64 0000000002ac1378 000007fee94dfdd0    65560      65 0000000002ad1410 000007fee94dfdd0    65560      66...  103 00000000165a71e0 000007fee94dfdd0 67108888     104 0000000027c11000 000007fee94dfdd0 67108888     105 total 102 objects106 Statistics:107               MT    Count    TotalSize Class Name108 000007fee94dfdd0      102    138593344 System.Byte[]109 Total 102 objects

果然,有那么多65592和65560啊 啊

隨便找一個看一下:

0:005> !do 0000000002ba4790

1 0:012> !do 0000000002ba4790 2 Name: System.Byte[]3 MethodTable: 000007fee94dfdd04 EEClass: 000007fee90e26b05 Size: 65590(0x10036) bytes6 Array: Rank 1, Number of elements 65566, Type Byte7 Element Type: System.Byte8 Fields:9 None

哦。這是個一維的數組,有65566字節,推測應該好像是short(int16)長度。

繼續,

!gcroot 0000000002b42dd0

0:012> !gcroot 0000000002b42dd0 Note: Roots found on stacks may be false positives. Run "!help gcroot" formore info.Scan Thread 0 OSTHread 1d3cRSP:18ef58:Root:00000000025c5b88(Ionic.Zip.ZipFile)->00000000025d2578(Ionic.Zlib.ParallelDeflateOutputStream)->00000000025dc528(System.Collections.Generic.List`1[[Ionic.Zlib.WorkItem, Ionic.Zip.Reduced]])->000000000294ac38(System.Object[])->0000000002b32d78(Ionic.Zlib.WorkItem)->0000000002b42dd0(System.Byte[])...Scan Thread 10 OSTHread 3718

這里有點看頭了! 看其跟對象 Ionic.Zip.ZipFile 這個對象占著沒銷毀的內存呢!

RSP:18ef58:Root:00000000025c5b88(Ionic.Zip.ZipFile)->00000000025d2578(Ionic.Zlib.ParallelDeflateOutputStream)->00000000025dc528(System.Collections.Generic.List`1[[Ionic.Zlib.WorkItem, Ionic.Z

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久99精品久久久久| 亚洲精品美女免费| 亚洲欧美国产高清va在线播| 欧美极品美女视频网站在线观看免费| 亚洲国产精品va在线看黑人动漫| 久久精品国产视频| 欧美精品第一页在线播放| 亚洲欧美精品suv| 17婷婷久久www| 国模私拍视频一区| 日韩精品视频中文在线观看| 日本精品一区二区三区在线播放视频| 精品久久久久久中文字幕大豆网| 日韩欧美亚洲国产一区| 国产亚洲a∨片在线观看| 亚洲天堂av网| 久久天天躁日日躁| 成人高h视频在线| 欧美在线免费看| 亚洲成人av中文字幕| 77777少妇光屁股久久一区| 国内精品小视频在线观看| 色偷偷偷综合中文字幕;dd| 国产精品一区二区三区免费视频| 国产日本欧美视频| 国产精品天天狠天天看| 日日噜噜噜夜夜爽亚洲精品| 国产suv精品一区二区三区88区| 久久伊人91精品综合网站| 欧美日韩视频在线| 欧美大全免费观看电视剧大泉洋| 国产精品十八以下禁看| 国产91精品视频在线观看| 91av在线播放| 91久久国产综合久久91精品网站| 久久久久久亚洲精品中文字幕| 亚洲精品理论电影| 国产亚洲精品美女久久久久| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲国产毛片完整版| 高清欧美性猛交| 国产精品天天狠天天看| 亚洲国语精品自产拍在线观看| 91av在线视频观看| 国产香蕉一区二区三区在线视频| 国产精品视频地址| 欧美国产日韩在线| 亚洲激情视频网站| 精品久久久久久亚洲精品| 欧美激情成人在线视频| 国精产品一区一区三区有限在线| 中文字幕亚洲天堂| 久久久久久久网站| 97香蕉超级碰碰久久免费的优势| 免费91麻豆精品国产自产在线观看| 久久久久久美女| 成人精品网站在线观看| 97久久精品视频| 欧美激情视频三区| 欧美电影在线免费观看网站| 久久亚洲精品网站| 日韩经典第一页| 亚洲成人激情小说| 色婷婷av一区二区三区在线观看| 久久久久久尹人网香蕉| 亚洲成人久久电影| 国产精品网站大全| 精品国内自产拍在线观看| 久久久久久网站| 伊人久久大香线蕉av一区二区| 国产成人免费av电影| 中文字幕精品影院| 亚洲精品一区二区网址| 日韩免费看的电影电视剧大全| 伊是香蕉大人久久| 国产欧美精品一区二区三区-老狼| 欧美午夜视频在线观看| 久久91亚洲人成电影网站| 欧美午夜精品久久久久久浪潮| 美女久久久久久久久久久| 亚洲第一区中文99精品| 亚洲一区免费网站| 欧美诱惑福利视频| 欧美性xxxx极品hd欧美风情| 国产精品福利在线观看| 亚洲最新av网址| 久久久中精品2020中文| 亚洲欧美日本另类| 久久亚洲国产精品成人av秋霞| 国产一区深夜福利| 亚洲香蕉av在线一区二区三区| 亚洲精品视频久久| 一区二区亚洲精品国产| 久久久国产影院| 久久精品色欧美aⅴ一区二区| 国产精品18久久久久久麻辣| 97婷婷涩涩精品一区| 琪琪第一精品导航| 国产精品尤物福利片在线观看| 亚洲视频在线视频| 成人网址在线观看| 97久久伊人激情网| 日韩大胆人体377p| 久久色免费在线视频| 欧美不卡视频一区发布| 国产亚洲综合久久| 欧美成aaa人片免费看| 亚洲人a成www在线影院| 国内精品久久久久影院优| 欧美极品在线播放| 亚洲已满18点击进入在线看片| 中文字幕国产亚洲2019| 成人福利网站在线观看| 国产精品第三页| 国产精品香蕉av| 欧美在线xxx| 亚洲女人被黑人巨大进入| 性亚洲最疯狂xxxx高清| 亚洲视频日韩精品| 欧美激情亚洲另类| 亚洲free性xxxx护士hd| 国语自产偷拍精品视频偷| 日韩国产精品一区| 亚洲国产精品久久久久秋霞不卡| 欧美另类交人妖| 国产精品久久久久91| 欧美在线一级va免费观看| 91福利视频网| 欧美综合第一页| 91chinesevideo永久地址| 国产欧美日韩91| 97视频在线观看视频免费视频| 岛国av在线不卡| 国产精品96久久久久久又黄又硬| 国内精品久久久久久影视8| 国内精品视频久久| 亚洲综合自拍一区| 成人在线视频网站| 国产精品黄色影片导航在线观看| 中文字幕在线视频日韩| 国产在线拍揄自揄视频不卡99| 国产成+人+综合+亚洲欧美丁香花| 国产精品久久久久久久久久三级| 国产精品96久久久久久又黄又硬| 91午夜在线播放| 日韩精品中文字幕在线播放| 欧美日韩在线一区| 日韩欧美综合在线视频| 91精品久久久久久久久久另类| 亚洲欧美制服综合另类| 91精品国产91久久久久久不卡| 日韩激情av在线免费观看| 亚洲伦理中文字幕| 午夜精品久久久久久久久久久久久| 最新69国产成人精品视频免费| 欧美亚洲国产日韩2020| 欧美亚洲在线视频| 欧美小视频在线观看| 日韩中文字幕在线播放| 精品国产区一区二区三区在线观看| 亚洲国产精品成人精品| 欧美激情18p| 精品亚洲夜色av98在线观看| 26uuu日韩精品一区二区|