Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This article helps you resolve the problem where the managed heap in your .NET application experiences high memory consumption when you use System.Transactions.Transaction.EnlistDurable.
Original product version: Microsoft .NET Framework 4.5
Original KB number: 2859968
Symptoms
The managed heap in your .NET application is experiencing high memory consumption and you're using System.Transactions.Transaction.EnlistDurable. You'll also see a large number of instances of the OletxResourceManager class on the managed heap.
Cause
You're using a different Guid for the Resource Manager identifier parameter for each call to System.Transactions.Transaction.EnlistDurable.
Resolution
Use the same Guid for all calls to EnlistDurable.
More information
Typically this Resource Manager identifier Guid is associated with the durable storage (the log) maintained by the Resource Manager and only a single Guid is used for all calls to EnlistDurable within an AppDomain. In other words, all EnlistDurable calls within an AppDomain are for the same Resource Manager. If a Resource Manager uses more than one Guid per AppDomain, the Resource Manager is required to drive recovery of transactions for all those different Resource Manager identifiers. There's also a performance cost if the transaction gets promoted to become a Microsoft Distributed Transaction Coordinator (MSDTC) transaction because each unique Resource Manager identifier that has enlisted in the transaction must have an associated Resource Manager object registered with MSDTC and that object is kept in anticipation of future EnlistDurable calls using the same identifier.