Frage

hat jemand eine konkrete Informationen über den Overhead mit .NET Framework 2.0 / 3.0 / 3.5?

Ich bin hauptsächlich daran interessiert ist, pro Instanz Overhead und ob es eine „Fixkosten“, unabhängig von der Anzahl der Instanzen, z.B. in einer Terminaldienste-Umgebung mit 300 Instanzen einer .NET Framework-Anwendung ausgeführt ist es nur 1 Instanz der Just-In-Time-Compiler?

Es wäre toll, wenn ich einen Approximationsalgorithmus erhalten, zB 10 MB pro Instanz + 50MB für den JIT

War es hilfreich?

Lösung

Es funktioniert genau die gleiche Art und Weise wie nicht verwalteten Code. Der CLR, die JIT-Compiler und die .NET-Framework-Baugruppen sind DLLs, die von jedem Prozess gemeinsam genutzt werden, dass Läufe Code verwaltet. Nur eine Kopie des Codes in den Arbeitsspeicher geladen, alle Prozesse abbilden ihre virtuellen Speicherseiten auf diese eine Kopie.

Managed Code neigt dazu, mehr privates Bytes als nicht verwalteten Code zu haben, die Art, die nicht mit anderen geteilt werden kann. Dass an den JIT-Compiler in erster Linie auf Grund ist, erzeugt es Maschinencode on-the-fly an Adressen, die nicht das gleiche für einen Prozess gegen eine andere sein wird. Und die Lader und Müll gesammelt Haufen neigen dazu, ein wenig fleischig zu sein.

Sie beseitigen die JIT-Compiler-Overhead durch Ngen.exe verwenden. Deshalb ist die .NET-Framework-Baugruppen gemeinsam genutzt werden, waren sie Ngen-ed, wenn Sie den Rahmen auf dem Rechner installiert. Sie können nicht alles über den Haufen tun, aber das ist nicht wirklich anders in nicht verwalteten Code.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top