標籤:
1 簡介
.Net Memory Profiler(以下簡稱Profiler):專門針對於.NET程式,功能最全的記憶體分析工具,最大的特點是具有記憶體動態分析(Automatic Memory Analysis)功能。
2 安裝
http://memprofiler.com/download.aspx
下載好後 直接下一步下一步
3 使用方法
支援7種類型.NET程式
- 啟動跟蹤(Profiler Application)
選定對應的調試方式,如調試傳統型程式,選中Profiler Application,然後選擇需要啟動的執行檔案,Profiler將作為宿主程式啟動程式開始即時監控記憶體.
將Profiler附加到指定的進程上,此時不能即時監控記憶體情況,只能夠收集記憶體鏡像.
- 匯入記憶體鏡像(Import Memory Dump)
可以選擇dmp為尾碼的記憶體鏡像檔案,比如Windbg以及DebugDiag匯出的鏡像檔案,此時不能即時監控記憶體情況,只能夠收集記憶體鏡像且不能跟蹤非託管資源.
4 軟體佈建
為了加快Profiler分析記憶體類型執行個體的速度,需要設定程式的符號路徑即(Symbol File Locations),進入菜單Tool->Options->Preferences->Symobl File Locations,得到快顯功能表如.
5 操作
首先,選擇需要偵錯類型,選擇 Profiler Application,選擇好需要啟動的程式exe檔案.
選擇層級
程式碼
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Couchbase;using Couchbase.Configuration;using Enyim.Caching.Memcached;namespace CentaNet.CouchbaseTest{ class Program { static void Main(string[] args) { int n = 0; while (true) { Console.WriteLine("=============第{0}次================", ++n); string Bucket = System.Configuration.ConfigurationManager.AppSettings["bucket"]; string BucketPassword = Bucket; var key = "cottrell_brewing-old_yankee_ale" + DateTime.Now.ToString(); Test(Bucket, BucketPassword, "http://10.4.18.13:8091/pools/default", key); Console.Write("\n"); } } static void Test(string Bucket, string BucketPassword, string url, string key) { var clientConfiguration = new CouchbaseClientConfiguration(); clientConfiguration.Bucket = Bucket; clientConfiguration.BucketPassword = BucketPassword; clientConfiguration.Urls.Add(new Uri(url)); clientConfiguration.SocketPool.ReceiveTimeout = new TimeSpan(0, 0, 111); clientConfiguration.SocketPool.ConnectionTimeout = new TimeSpan(0, 0, 111); clientConfiguration.SocketPool.DeadTimeout = new TimeSpan(0, 0, 111); var client = new CouchbaseClient(clientConfiguration); var result = client.Store(StoreMode.Set, key, "test"); if (result) { var savedBeer = client.Get(key); Console.WriteLine(clientConfiguration.Urls[0].AbsoluteUri + " " + savedBeer.ToString()); } else { Console.WriteLine(clientConfiguration.Urls[0].AbsoluteUri + " 失敗" ); } } }}
執行效果如下
可以看到佔用Uri資源執行個體是最多的
儲存快照 分析原因
雙擊
可以看出造成URI執行個體原因是 couchbasepool 造成的,可以跟蹤程式碼
Import Memory Dump
轉存需要分析的dmp檔案
需要下載SDK支援
https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit
可以看到記憶體的使用方式 分析溢出
推薦其他4款超實用的.NET效能分析工具
1.JetBrains dotTrace
JetBrains dotTrace是一款效能和記憶體分析工具,它可以協助你最佳化應用程式效能指標,支援.NET 1.0版本到4.5,快速剖析器瓶頸,找出影響效率的代碼。官方網站上面有10天試用版,大家可以點擊下載使用。
2.ANTS Performance Profiler
ANTS效能分析器是一種用於分析.NET架構支援的用任何語言編寫的應用程式的工具。ANTS效能分析器能分析所有.NET應用程式,包括ASP.NET網路應用程式、Windows服務和COM+應用程式。ANTS效能分析器能在幾分鐘內識別效能瓶頸,運行非常快速,且響應時,對程式的執行具有最低影響。ANTS效能分析器可用作一種獨立工具,也可用作Red Gate .NET Developer Bundle的一部分。目前支援14天免費試用,大家可以去體驗體驗。
3.EQATEC Profiler
另一個非常好的.NET分析器,它擁有多個版本,有免費版,標準版、專業版等。不僅使用方便,而且最佳化速度也相當快。
4.Telerik Just Trace
Telerik Just Trace是一款幫你輕鬆找出記憶體流失的分析工具,並且可以輕鬆搞定許多效能問題。
.NET Memory Profiler 查看記憶體使用量情況