Leaked record detected with address …, name (unknown), and thread local refcount

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.

Issue

First we looked into when this error occurred and identified the PowerShell in question.

Solution

I found this 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)
{

}

 

Advertisements