Ich versuche programmgesteuert den Speicherverbrauch von Plugins zu begrenzen, die in einer .Net AppDomain ausgeführt werden, aber ich kann keine Setup-Parameter dafür finden, noch kann ich eine Möglichkeit finden, eine AppDomain abzufragen, wie viel Speicher es ist verbraucht. Irgendwelche Ideen?Wie kann ich herausfinden, wie viel Speicher eine .Net Appdomain verbraucht?
Antwort
Hier finden Sie die Dokumentation zum Abfragen der Speicherbelegung eines Prozesses. Nicht das gleiche wie die AppDomain, aber es könnte ein Ort zum Starten sein.
http://msdn.microsoft.com/en-us/library/s80a75e5(VS.80).aspx
Sie können die GC fragen, was es denkt derzeit auch zugeordnet ist.
http://msdn.microsoft.com/en-us/library/system.gc.gettotalmemory(VS.71).aspx
Nicht sicher programmatisch, 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.
Mit dem mscoree.CorRuntimeHostClass Interop von C: \ WINDOWS \ Microsoft.NET \ Framework \ vXXXXXX \ mscoree.tlb
Alter Frage, aber in der Zwischenzeit (seit .NET Framework 4.0) Eine neue Lösung ist verfügbar. Sie müssen ARM (Anwendungsdomänen-Ressourcenüberwachung) aktivieren. Von diesem Zeitpunkt an können Sie Informationen über die gesamte verbrauchte Prozessorzeit, die Speichernutzung usw. anfordern.