You have a Microsoft .NET Framework 2.0 Service Pack 2 (SP2)-based application or a Microsoft .NET Framework 3.5 Service Pack 1 (SP1)-based application that uses the WindowsIdentity class. When you dispose of the WindowsIdentity object, instances of the SafeTokenHandle object and SafeLocalAllocHandle object that were created by the WindowsIdentity object are queued incorrectly for finalization.
If you use the !finalizequeue command in WinDbg, you see that there is an increase in the finalization queue length. When the finalization queue length grows large, performance decreases.