Dies ist wahrscheinlich entlang der Linien ist von .NET Collections and the Large Object Heap (LOH)Large Object Heap mit XML-Dokumenten
In .Net, ich lade ein XmlDocument mit einer Zeichenfolge, die ~ 200 KB Textdokument macht, wenn die XML Base64 umgewandelt wird. Der Punkt ist, dass die Zeichenfolge dem großen Objekt-Heap zugewiesen werden sollte. Ich weiß aus Vergleichen hier lesen, dass der XmlReader der effizienteste Weg ist, die Zeichenfolge zu lesen, aber das XmlDocument gibt mir wahrscheinlich das direktere Lesen mit mehr Funktionalität (xpath).
Jeder Knoten meines XML sollte eine ziemlich kleine Zeichenfolge sein, nichts in der Nähe des Heapspeichers für große Objekte. Mit Lutz .Net Reflector erscheint das XmlDocument intern mit verknüpften Knoten.
Also endlich, meine Frage: Wird das Laden dieser Zeichenfolge, die ~ 200 KB (> 85000 Bytes) speichert, verursachen ein anderes Objekt auf die LOH, wenn XmlDocument verwendet. Wir sind ein wenig besorgt darüber, den Heap zu fragmentieren und zu OOM-Fehlern zu führen. Oder schafft das XmlDocument (zumindest für den Fall von Daten, über die ich frage) zufällig eine Menge von Objekten für den verwalteten Heap?
Die Zeichenfolge stammt aus der Datenbank. Wir bauen eine vertikale Markt-App auf der Microsoft Dynamics-Plattform auf, sodass die Verwendung anderer Arten von Datenbankfeldern für mich keine Option darstellt. –
Um klarer zu sein, stammt die Zeichenfolge vom Dynamics-Webdienst, der sie aus der Datenbank abgerufen hat. –
Wenn es von einem Webdienst kommt, holen Sie es in einer HTTP-Anfrage ab? Wenn Sie die Kontrolle darüber haben, können Sie vielleicht das Ergebnis streamen - wenn nicht, sind Sie im Grunde verpflichtet, diese 200K-Zeichenfolge trotzdem im Speicher zu haben. –