Die Host-Anwendung überwacht die von der AppDomain verbrauchten Ressourcen. Einige Hosts nutzen diese Informationen, um festzustellen, ob der Speicher- oder CPU-Verbrauch einer AppDomain das entsprechende Niveau übersteigt, und zwingen die Deinstallation eines AppDomain.
Man kann auch Monitoring nutzen, um den Ressourcenverbrauch verschiedener Algorithmen zu vergleichen und zu bestimmen, welcher Algorithmus weniger Ressourcen verbraucht. Da AppDomain-Überwachung von Natur aus Overhead verursacht, muss der Host die statische Eigenschaft MonitoringEnabled der AppDomain auf true setzen, um offene Überwachung anzuzeigen.Die Überwachung kann nach dem Einschalten nicht mehr ausgeschaltet werden; Wenn du versuchst, MonitoringEnabled auf false zu setzen, wird eine ArgumentException ausgelöst。
Sobald die Überwachung aktiviert ist, kann Ihr Code die folgenden vier von der AppDomain-Klasse bereitgestellten Schreibschutzeigenschaften abfragen.
- MonitoringSurvivedProcessMemorySize Diese statische Int64-Eigenschaft gibt die Anzahl der Bytes zurück, die von allen AppDomains verwendet werden, die von der aktuellen CLR-Instanz kontrolliert werden. Diese Zahl ist nur garantiert, wenn die letzte Müllabfuhr durchgeführt wurde.
- Die Eigenschaft MonitoringTotalAllocatedMemorySize dieser Int64-Instanz gibt die Anzahl der Bytes zurück, die einem bestimmten AppDomain zugewiesen wurden. Diese Zahl ist nur garantiert, wenn die letzte Müllabfuhr durchgeführt wurde.
- Die Eigenschaft MonitoringSurvivedMemorySize dieser Int64-Instanz gibt die Anzahl der derzeit von einer bestimmten AppDomain verwendeten Bytes zurück. Diese Zahl ist nur garantiert, wenn die letzte Müllabfuhr durchgeführt wurde.
- MonitoringTotalProcessorTime ist eine TimeSpan-Instanzeigenschaft, die die CPU-Nutzung einer bestimmten AppDomain zurückgibt.
Im Folgenden wird gezeigt, wie man diese drei Eigenschaften verwendet, um Änderungen in einer AppDomain zwischen zwei Zeitpunkten zu überprüfen:
Im Folgenden wird gezeigt, wie die AppDomainMonitorDelta-Klasse verwendet wird
|