Asp.net
辨識 ASP.NET 應用程序中的記憶體問題
我有一個 ASP.NET 應用程序正在執行,並且在生產機器上它使用了大約 450MB 的 RAM,但是,它不應該使用這麼多,而且它似乎隨著時間的推移而增加,所以看起來可能存在洩漏或至少有些東西沒有被正確釋放。
我用 PerfMon 看了一下,GC Gen2 中有 416MB。
任何人都知道找出它在記憶體中保存的內容嗎?我可以抓住 dotTrace/ANTS 並以某種方式將它附加到我的 IIS(6 - 在 Windows Server 2003 上) - 還是有更好的方法?:-)
謝謝。
觀看Tess的TecheEd 展示會是一個好的開始。
她展示了使用 adplus 對消耗大量 RAM 的 ASP.NET 應用程序進行轉儲,然後將該轉儲載入到 WinDbg 中進行分析。在 WinDbg 中使用 !gcroot 命令查找意外的根並從那裡開始。她建議不要在記憶體或會話中儲存包含對其他對象的引用的複雜類型。
在循環中更新一堆字元串的經典問題可能會導致您看到的問題,因為為新字元串分配了大量記憶體而沒有釋放它們。您是否在適當的地方使用 StringBuilder ?