Wie kann ich ohne Angabe von Domain-Neutralität eine .net Nativbild (NGEN) in mehrere AppDomains laden?

StackOverflow https://stackoverflow.com/questions/4503888

Frage

NGEN + AppDomain Problem hier.

Ich arbeite an einigen Anwendungsänderungen, die native Bilder korrekt geladen machen kreisen um zu schrecklich JIT Zeit in unserer .net Anwendung zu verhindern. Einige Teile waren einfach, aber alle Baugruppen, die in AppDomains laden (was unsere App zu verwenden hat für eine Vielzahl von Gründen) nur ihre Mutterbild zum ersten Mal laden und auf nachfolgende Lasten (in dem, was ist jetzt ein neuer Appdomain) das Bild wird verworfen und JIT auftritt.

Ich weiß alles über Domain-neutral Laden und haben bereits Gebrauch davon für einige unserer Baugruppen aus, wo es Sinn macht, aber tun Domain-neutral Laden bricht einer der Hauptgründe, aus für AppDomains in erster Linie mit für wir -. als Domain-neutrale Bilder können nie entladen werden

Setzen Sie kurz und bündig, ich brauche eine Art und Weise nativer Bilder Laden zu haben und Montage Entladen. Ich hatte gehofft, dass die normale Beschränkung würde so lange nicht gelten, als ich die erste Nutzung des nativen Bildes entladen, bevor ich versuchte, es wieder zu laden, aber dies in Ablehnung führt wie wenn der versucht, gleichzeitig die native Bild zu laden.

Dieser MSDN-Artikel das folgende Zitat enthält:

Ein alternativer Ansatz zur fallenden zurück zur JIT-Kompilierung ist zu Last verschiedene Kopien des nativen Bild jeder AppDomain in diese lädt die entsprechende Montage als domänenspezifisch. Dies ist jedoch Ansatz würde erfordern, jede Kopie das NGen Bild, mit Ausnahme des ersten, geladen an einer anderen Adresse zu von seiner bevorzugten Basisadresse. So alle diese Kopien des NGen Bild müssten ihre Adressen festgelegt werden.

Dies würde für meine Bedürfnisse perfekt sein, aber dieser Artikel wurde der einzige habe ich stelle je gesehen erwähnt, und ich bin nicht sicher, wie es umgesetzt wird.

Vielen Dank im Voraus für jede Einsicht und Dank für das Schauen.

War es hilfreich?

Lösung

Ich hatte gehofft, dass die normale Beschränkung würde so lange nicht gelten, als ich die erste Nutzung des nativen Bildes entladen, bevor ich es versuchte, wieder zu laden, aber dies in Ablehnung führte wie wenn der versucht, gleichzeitig die native Bild zu laden.

Dies funktioniert, aber Sie müssen warten, für die native Bild tatsächlich entladen werden. Wenn AppDomain.Unload zurückkehrt, wird die Appdomain nicht vollständig entladen. Die Appdomain wird vollständig (zusammen mit einheimischen Bildern) entladen erhält erst nach nächstem Voll GC.

Mit diesem MSDN-Artikel enthält das folgende Zitat:

Surupa wurde in der CLR über eine mögliche alternative Implementierung spekuliert aber dies ist derzeit nicht umgesetzt werden.

Danke Lakshan Fernando CLR Team

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