我有一個網站,一些用戶可以上傳他的DLL。我需要從這個DLL創建一個實例並調用一個特定的方法。此外,我需要在1個進程中使用多個dll,因此它不是我使用System.Diagnostics.Process的選項。如何確定我的.NET應用程序中的內存使用情況
有沒有辦法確定此方法調用使用多少內存或將其限制在我的應用程序運行時? 預先感謝任何幫助
我有一個網站,一些用戶可以上傳他的DLL。我需要從這個DLL創建一個實例並調用一個特定的方法。此外,我需要在1個進程中使用多個dll,因此它不是我使用System.Diagnostics.Process的選項。如何確定我的.NET應用程序中的內存使用情況
有沒有辦法確定此方法調用使用多少內存或將其限制在我的應用程序運行時? 預先感謝任何幫助
在.net中的內存使用情況是很難衡量 - 這將取決於很多像是否垃圾收集運行的因素,如何架構的很多已經被加載等
你可以看一下內存使用量使用performance counters
每個進程級別爲假設你已經在考慮一個半信任環境中運行的用戶代碼的安全性影響的時刻,你需要使用一個AppDomain來加載DLL - 這樣它可以卸載而無需重新啓動整個網站/工作池
非常感謝你的回答。 我將嘗試更精確地解釋我需要什麼。 :) 我的項目是一個開發者的遊戲,他們需要上傳他們的代碼並相互「對抗」。 因此,在有一些上傳的DLL之後,我們可以創建一輪以確定誰獲勝:)。 我想過在一個單獨的過程中創建這一輪,在這個過程中,我將創建實例並從上傳的DLL調用方法。而且我需要限制這些實例的內存使用量,所以如果開發者用完了這個限制 - 他就會失去這一輪。 – Andrey 2011-01-24 23:32:20
認真你就不能走過去Red Gates Ants Memory Profiler - 免費試用14天......
你能使用GC.GetTotalMemory作爲替代來跟蹤你的內存使用情況?
http://msdn.microsoft.com/en-us/library/system.gc.gettotalmemory.aspx
如果你使用.NET 4.0看一看MemoryFailPoint。
另一個建議:.NET 4.0現在提供工具來監督AppDomain的內存消耗(AppDomain.MonitoringIsEnabled Property)。例如,如果AppDomain使用太多的內存,則可以使用主AppDomain來輪詢和拆除AppDomain。
順便說一句,如果我們其中一個人回答了您的問題,請您通過點擊問題旁邊的勾號接受答案。謝謝 – Basic 2011-01-25 20:38:31