Yo creo que el problema está no en la función, sino en ejecutar esa función constantemente tan rápido. Se crean más datos de los que se alcanzan a liberar.
Te pongo un ejemplo,
using System;
using System.Diagnostics;
using System.Timers;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
Timer timer
= new Timer
(50); //Para una aplicacion de consola toca usar este Timer //http://msdn.microsoft.com/en-us/magazine/cc164015.aspx
timer
.Elapsed += new ElapsedEventHandler
(Run
); timer.Start();
Console.ReadLine();
}
static void Run(object sender, EventArgs e)
{
Console.WriteLine(DateTime.Now);
for (int i = 0; i < 2000; i++)
{
Process.GetProcesses();
}
}
}
}
El código es muy simple, pero si lo ejecutas verás como la RAM va aumentando progresivamente
Saludos