2009-07-20 5 views
1

SandCastle kann unsere Klassenbibliothek nicht verarbeiten, da sie während der XSL-Umwandlung mit einer OutOfMemoryException-Ausnahme abstürzt.SandCastle und OutOfMemoryException

Was können wir dagegen tun, bis auf das Offensichtliche, kaufen Sie mehr Speicher? Das Problem ist, dass dies unsere Entwickler-Maschinen mit 3,3 GB Speicher auf einem 32-Bit-Betriebssystem sind, also müssen wir entweder auf 64-Bit- und mehr Arbeitsspeicher (was für eine Weile nicht passieren wird) oder einen virtuellen Server einrichten Tun Sie dies mit viel Speicher (was sich auf Produktionsserver auswirken wird).

Ich bezweifle ernsthaft, dass wir die größte Klassenbibliothek der Welt haben, die Hilfedateien benötigt, also welche Möglichkeiten haben wir? Gibt es eine magische "Nicht mit nicht genügend Speicherfehler abstürzen" Einstellung, die wir vergessen zu deaktivieren?

Antwort

1

Wenn Sie ein 32-Bit-Windows verwenden, kann Ihr Benutzerprozess nur standardmäßig 2 GB Speicher adressieren (3 GB wird als große Adresse ausgeführt). Die 2 GB werden für alles in dem Prozess verwendet, so dass die .NET-Laufzeit, Standard-Bibliotheken, Booking und so weiter ihren Platz einnehmen. Nach meiner Erfahrung bleiben etwa 1,5 GB für .NET-Anwendungen auf 32-Bit.

Sie können Zugriff auf mehr Arbeitsspeicher erhalten, indem Sie den großen Adress-Aware-Schalter verwenden, der jedoch nicht kostenlos ist, wenn Sie mit 32-Bit-Windows arbeiten. Wenn Sie auf 64-Bit-Windows umsteigen, wird Ihre 32-Bit-Anwendung auf den gesamten 32-Bit-Adressraum zugreifen und Ihnen somit 4 GB adressierbaren Speicherplatz zur Verfügung stellen.

Ich habe vor kurzem einen Blog-Eintrag mit Details über die Speichernutzung für .NET-Anwendungen geschrieben, aber da ich auf Dänisch blogge, können Sie es möglicherweise nicht lesen. Allerdings, wenn Sie wollen einen Blick haben, ist der Link: http://kodehoved.dk/?p=156

Sie können sich auch in diesem MSDN-Blog-Post relevant finden: http://blogs.msdn.com/maoni/archive/2007/05/15/64-bit-vs-32-bit.aspx

+0

Während ich dies versuchen wird, es nicht bei mir registrieren, dass wir haven‘ t aktiviert/3GB Unterstützung für unsere Computer, so muss ich in das tun. Die Frage ist immer noch, ob dies nur eine vorübergehende Lösung ist (vorausgesetzt, es behebt unser aktuelles Problem). Wird Sandcastle einfach so viel Speicher benutzen und es gibt keine Möglichkeit, darum zu bitten, das nicht zu tun? –

+0

Sorry, kann ich nicht sagen. Meine Antwort ist meist allgemeine Hinweise zur Speicherbenutzung. –