Leaked record detected with address …, name (unknown), and thread local refcount
Table of Contents
The following error is generated by a PowerShell script:
Leaked record detected with address 000000001D5ED488, name (unknown), and thread local refcount 73. To see AddRef/Release callstacks for this leak, run stsadm -o setproperty -pn refcountcallstacktrackingenabled -pv true.
The Solution
I found an article showing the same error:
https://social.msdn.microsoft.com/Forums/en-US/7a5bc510-1cf4-452f-848c-e98820eeb50e/getting-attempted-to-use-an-object-that-has-ceased-to-exist-after-upgrade-to-sp-2013-on-site?forum=sharepointadmin
However this wasn’t our problem.
I ran the PowerShell script in question in the ISE PowerShell Debugger and found the problem with this code:
foreach ($item in $List.Items)
{
….
}
Suddenly this was filling up my memory.
$List.Items loads all the list items and for a list with about 5000 items that is not a good idea. Running something like this is a better idea:
$spqQuery = New-Object Microsoft.SharePoint.SPQuery
$spqQuery.Query =
“<Where>
…
</Where>”
$spqQuery.ViewFields = “<FieldRef Name=’ID’ /><FieldRef Name=’Title’ />”
$spqQuery.ViewFieldsOnly = $true
$splListItems = $ulsList.GetItems($spqQuery)foreach ($splListItem in $splListItems)
{
…
}