Jean Paul's Blog

There are 2 types of People in the World, One who Likes SharePoint and..

  • Microsoft MVP

  • MindCracker MVP

  • CodeProject MVP

  • eBook on SharePoint 2010

  • eBook on Design Patterns

  • eBook on Windows Azure

  • NLayers Framework @ CodePlex

  • MSDN Forums

  • .Net vs. Java

    Due to Public Demand
  • Advertisements

PowerShell Memory Leak & Prevention

Posted by Paul on May 13, 2015

In this article we can explore how to prevent memory leaks while writing SharePoint scripts.

Memory Leak

While writing PowerShell scripts, there are immense chances to form memory leaks if the script-writer did not free the objects correctly. While dealing with SPFarm, SPSiteAdministration SPSite, SPWeb objects with huge internal data, the problem can become more vulnerable crunching system resources.


We can prevent memory leaks quickly using the following Cmdlets:

1. Start-SPAssignment

2. Stop-SPAssignment

Start- SPAssignment & Stop-SPAssignment

Start-SPAssignment will start collecting memory objects. Later we can invoke the Stop-SPAssignment to release the memory.

$c = Start-SPAssignment;

$w = Get-SPWeb –Site http://serfver –AssignmentCollection $c

Stop-SPAssignment $c;

Explanation In the above code, we are first declaring the variable $c pointing to collect the assignment objects. In the next line Get-SPWeb will create a web object in $w and simultaneously it I added to the assignment collection. The Stop-SPAssignment will release all the memory-objects within $c.


Here additional coding is required to add the web objects to assignment collection. In production scenarios where pre-existing PowerShell script has to be modified will required much effort.

Using –Global Switch

We can do memory leak prevention quickly using the –Global switch. Example is given below:

Start-SPAssignment -Global

$w = Get-SPWeb –Site http://serfver –AssignmentCollection $c

Stop-SPAssignment -Global

Types of Assignment

There are 3 types of Assignments:

1. No Assignment

2. Simple Assignment

3. Advanced Assignment

Simple Assignment is the one we have seen using the –Global parameter. This is used more often.

Advanced Assignment is the one with assignment variable. This is used in advanced scripts.

No Assignment is where no parameters or variables are used. Here objects are disposed each iteration.



In this article we have explored how to prevent memory leaks while writing SharePoint scripts.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s