Memory leaks while using array of double
        Posted  
        
            by Gacek
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Gacek
        
        
        
        Published on 2010-05-06T19:57:49Z
        Indexed on 
            2010/05/06
            20:18 UTC
        
        
        Read the original article
        Hit count: 303
        
c#
|memory-management
I have a part of code that operates on large arrays of double (containing about 6000 elements at least) and executes several hundred times  (usually 800) .
When I use standard loop, like that:
double[] singleRow = new double[6000];
int maxI = 800;
for(int i=0; i<maxI; i++)
{
singleRow = someObject.producesOutput();
//...
// do something with singleRow
// ...
}
The memory usage rises for about 40MB (from 40MB at the beggining of the loop, to the 80MB at the end).
When I force to use the garbage collector to execute at every iteration, the memory usage stays at the level of 40MB (the rise is unsignificant).
double[] singleRow = new double[6000];
int maxI = 800;
for(int i=0; i<maxI; i++)
{
singleRow = someObject.producesOutput();
//...
// do something with singleRow
// ...
GC.Collect()
}
But the execution time is 3 times longer! (it is crucial)
How can I force the C# to use the same area of memory instead of allocating new ones? 
Note: I have the access to the code of someObject class, so if it would be needed, I can change it.
© Stack Overflow or respective owner