El uso de memoria alta se experimenta al usar EnlistDurable

Este artículo le ayuda a resolver el problema en el que el montón administrado de la aplicación .NET experimenta un alto consumo de memoria al usar System.Transactions.Transaction.EnlistDurable .

Versión del producto original:   Microsoft .NET Framework 4.5
Número KB original:   2859968

Síntomas

El montón administrado en la aplicación .NET está experimentando un alto consumo de memoria y está usando System.Transactions.Transaction.EnlistDurable . También verá un gran número de instancias de la OletxResourceManager clase en el montón administrado.

Causa

Está usando un Guid diferente para el parámetro de identificador del Administrador de recursos para cada llamada a System.Transactions.Transaction.EnlistDurable .

Solución

Use el mismo Guid para todas las llamadas a EnlistDurable .

Más información

Normalmente, este Guid de identificador de Administrador de recursos está asociado con el almacenamiento duradero (el registro) que mantiene el Administrador de recursos y solo se usa un guid para todas las llamadas a dentro de EnlistDurable un AppDomain. En otras palabras, todas EnlistDurable las llamadas dentro de una son para el mismo Administrador de AppDomain recursos. Si un Administrador de recursos usa más de un Guid por , el Administrador de recursos es necesario para impulsar la recuperación de transacciones para todos los AppDomain identificadores diferentes del Administrador de recursos. También hay un costo de rendimiento si la transacción se promueve para convertirse en una transacción del Coordinador de transacciones distribuidas de Microsoft (MSDTC), ya que cada identificador único del Administrador de recursos que se ha inscrito en la transacción debe tener un objeto asociado del Administrador de recursos registrado con MSDTC y ese objeto se mantiene en espera de futuras llamadas con el mismo EnlistDurable identificador.