Microsoft KB Archive/904646

From BetaArchive Wiki

Article ID: 904646

Article Last Modified on 8/28/2006



APPLIES TO

  • Microsoft .NET Framework 1.1




SYMPTOMS

When you run a Microsoft .NET Framework 1.1 application that uses Microsoft COM+ components, you may notice a gradual reduction in system performance.

This problem occurs when the following conditions are true:

  • The application uses the common language runtime (CLR).
  • The application makes extensive use of Microsoft Component Object Model (COM) objects that are hosted on a remote server.

Note If you monitor CPU utilization, you notice the following behavior:

  • CPU utilization on the server increases approximately every two minutes.
  • The increase in CPU utilization appears to be associated with the Svchost.exe process that hosts the Rpcss service.
  • Increased memory consumption is associated with the process that hosts the COM objects.


CAUSE

This problem occurs because of the way that the .NET Framework 1.1 manages references to COM objects. In certain high-load applications, many unreleased COM references may accumulate. If the unreleased COM references are related to objects, and these objects are hosted on a remote server by using the DCOM protocol, the remote server must query clients every two minutes to determine whether the objects are regularly referenced. The .NET garbage collector cannot detect unreleased references on the remote server and does not account for the unmanaged memory that is allocated by COM objects.

RESOLUTION

Hotfix rollup information

To resolve this problem, install the hotfix rollup that is described in the following Microsoft Knowledge Base article:

890340 Availability of the .NET Framework 1.1 post-Service Pack 1 hotfix rollup for MsCorLib.dll, for MsCorSvr.dll, and for MsCorWks.dll


For this hotfix to function correctly, you may also have to apply one of the following hotfixes.

Microsoft Windows 2000

To resolve this problem in Microsoft Windows 2000, apply the hotfix that is described in the following Microsoft Knowledge Base article:

888000 Availability of Windows 2000 Post-Service Pack 4 COM+ 1.0 Hotfix Rollup Package 31


Microsoft Windows XP Service Pack 1 or in Windows XP

To resolve this problem in Windows XP Service Pack 1 (SP1) or in Windows XP, apply the hotfix that is described in the following Microsoft Knowledge Base article:

895200 Availability of Windows XP COM+ Hotfix Rollup Package 9


Microsoft Windows XP Service Pack 2

This hotfix is already included with Microsoft Windows XP Service Pack 2 (SP2). For more information, click the following article number to view the article in the Microsoft Knowledge Base:

838211 List of Com+ fixes in Windows XP Service Pack 2 and in Windows XP Tablet PC Edition 2005


Microsoft Windows XP Tablet PC Edition 2005

This hotfix is already included with Microsoft Windows XP Tablet PC Edition 2005. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

838211 List of Com+ fixes in Windows XP Service Pack 2 and in Windows XP Tablet PC Edition 2005


Microsoft Windows Server 2003

To resolve this problem in Microsoft Windows Server 2003, apply the hotfix that is described in the following Microsoft Knowledge Base article:

895250 Availability of Windows Server 2003 COM+ 1.5 Rollup Package 4


Microsoft Windows Server 2003 Service Pack 1

This software update is already included with Microsoft Windows Server 2003 Service Pack 1 (SP1).

WORKAROUND

To work around this problem, explicitly release each COM reference. To do this, use the Marshal.ReleaseComObject method until the ReleaseComObject method returns 0.

Note It can be difficult and time-consuming to systematically use the Marshal.ReleaseComObject method on every managed reference to a COM object. You can also use the GC.Collect method and the GC.WaitForPendingFinalizers method to force early collection of COM references. However, this technique degrades application performance most of the time. Therefore, we do not recommend this technique.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

MORE INFORMATION

For more information, click the following article number to view the article in the Microsoft Knowledge Base:

824684 Description of the standard terminology that is used to describe Microsoft software updates


Keywords: kbbug kbnetframe110presp1fix kbpubtypekc kbqfe kbfix KB904646