SQL update scripts taking too much memory and doesn't free it up
As it seems you execute the SqlCommand only if flag == true so the first thing you should do is place a guard clause at the top of the method.  
The SqlCommand object implements the IDisposable interface, therefor you should enclose it in an using statement which takes care of the disposing of this object.  
the default value of the CommandType property is CommandType.Text so there is no need to assign it.  
there is a overloaded constructor, which takes the connection and the querystring so you should use it.  
Execute is not a compound word, so you shouldn't use PascalCase for this word. The method should be named ExecuteCommand().  
a variable named flag does not describe what its purpose is. Much better would be shouldBeExecuted.
you should always use braces {} although they are optional for single line if statements. Omiting them will lead to potential error prone code.  


Applying these points will lead to  

private void ExecuteCommand(SqlConnection conn, string script, bool shouldBeExecuted)
{
    if (!shouldBeExecuted) { return; }

    using (SqlCommand command = new SqlCommand(script, conn))
    {
        command.ExecuteNonQuery();               
    }
}