2010-11-21 4 views
0

Im Studium auf .NET Multifile Assemblies. Im Rahmen der multifile Baugruppen, die Buch heißt es:.NET Multifle Assemblys ... Kann RAM-Speicher sparen, weil sekundäre Module bei Bedarf geladen werden?

* .netmodules [nicht das primäre Modul] werden auf Anforderung durch die CLR geladen, wenn durch den anrufenden Code verwendet

mich Set auf der rechten Seite verfolgen, wenn ich falsch liege, aber beim Aufruf einer ausführbaren Datei werden alle referenzierten Assemblys, einschließlich des kompilierten Codes der ausführbaren Datei, in den Speicher geladen und dann vom JIT (Just in time Compiler) verarbeitet, wenn der Code aufgerufen wird. Ich mag das obige Zitat falsch verstehen, aber wie ich das Zitat lese ist, dass .netmodule, die Teil einer Mehrzweck-Baugruppe sind, nicht in den Speicher geladen werden, bis sie genannt werden.

Bin ich richtig dabei?

Antwort

1

... aber wenn eine ausführbare Datei aufrufen, werden alle referenzierten Assemblys, einschließlich der kompilierte Code ausführbare Datei in den Speicher geladen

Nr Baugruppen geladen werden, wenn sie benötigt werden. Wenn Sie keine Baugruppe benötigen (z. B. eine Satellitenressourcenbaugruppe für eine bestimmte Sprache oder eine Referenz), werden sie nicht geladen. JIT solcher Assemblys werden immer dann ausgeführt, wenn auf sie zugegriffen wird und sie geladen werden. Als Referenz verwenden Sie Richters CLR über C#.

+0

Ich sehe jetzt, dass die referenzierten Assemblies arent geladen werden, bis sie benötigt werden. Ist die ausführende Assembly vollständig in den Arbeitsspeicher geladen? Wenn ich beispielsweise MyExecutingAssembly.exe ausführe, wird die vollständige Assembly in den Arbeitsspeicher geladen? ("full" bedeutet die Metadaten, CIL, Header, Manifest) – contactmatt