Speicherüberschreitungsausnahmen treten nur auf, wenn der Garbage Collector nicht genügend Speicher freigeben konnte, um eine angeforderte Zuordnung durchzuführen. Dies kann passieren, wenn Sie ein Speicherleck haben, das in einer Garbage Collection-Plattform bedeutet, dass einige Objektreferenzen länger aufbewahrt werden, als sie benötigen. Häufige Ursachen für Lecks sind Objekte, die globale Daten (statische Variablen) enthalten, z. B. ein Singleton, ein Cache oder ein Pool, der Referenzen zu lange aufbewahrt.
Wenn Sie GC.Collect explizit aufrufen, kann der Speicher aus den gleichen Gründen wie die implizite Sammlung fehlgeschlagen. Der explit GC.Collect-Aufruf würde also nur die Orchestrierung verlangsamen.
Wenn Sie .NET-Klassen von Ihrem Orchestrierungen fordern, schlage ich vor, versuchen, das Problem zu isolieren, indem die gleichen Klassen von einer reinen .NET-Anwendung aufrufen (keine BizTalk beteiligt)
Es ist auch möglich, dass es kein Leck ist, aber dass jede Instanz gleichzeitig zu viel Speicher verbraucht. BizTalk kann Orchestrierungen in der Regel dehydrieren, wenn dies erforderlich ist. Dies kann jedoch verhindert werden, wenn ein Schritt in der Orchestrierung (oder einem großen atomaren Bereich) zu lange dauert, um ausgeführt zu werden.
1400 MB sieht auch groß für nur 15 gleichzeitige Instanzen. Machst du Manipulationen an großen Nachrichten in der Orchestrierung? In diesem Fall können Sie die Speichernutzung erheblich reduzieren, indem Sie Operationen vermeiden, die das Laden der gesamten Nachricht erzwingen, und stattdessen die Nachricht mithilfe von Streaming bearbeiten.