Wie kann ich herausfinden, wie viel Speicher eine .Net-Appdomain verbraucht?
Frage
Ich versuche, den Speicherverbrauch von Plugins, die in einer .Net AppDomain ausgeführt werden, programmgesteuert einzuschränken, kann jedoch weder Setup-Parameter dafür finden, noch kann ich eine Möglichkeit finden, eine AppDomain abzufragen, um herauszufinden, wie viel Speicher sie verbraucht .Irgendwelche Ideen?
Lösung
Hier ist die Dokumentation zum Abfragen der Speichernutzung eines Prozesses.Nicht dasselbe wie die AppDomain, aber es könnte ein Ausgangspunkt sein.
http://msdn.microsoft.com/en-us/library/s80a75e5(VS.80).aspx
Sie können den GC auch fragen, was seiner Meinung nach derzeit zugewiesen ist.
http://msdn.microsoft.com/en-us/library/system.gc.gettotalmemory(VS.71).aspx
Andere Tipps
Alte Frage, aber mittlerweile (seit .Net Framework 4.0) gibt es eine neue Lösung.Sie müssen ARM (Application Domain Resource Monitoring) aktivieren.Ab diesem Zeitpunkt können Sie Informationen zur insgesamt verbrauchten Prozessorzeit, Speichernutzung usw. anfordern.
Programmtechnisch bin ich mir nicht sicher, aber Process Explorer kann Ihnen sagen, wie viel Speicher eine .net-AppDomain verwendet.Vielleicht haben sie eine Dokumentation darüber, wie sie diese Informationen abfragen.
Verwenden des mscoree.CorRuntimeHostClass-Interops von C:\WINDOWS\Microsoft.NET\Framework\vXXXXXX\mscoree.tlb