Accord.Imaging.MemoryManager.FreeUnusedMemory C# (CSharp) Method

FreeUnusedMemory() public static method

Force freeing unused memory.
Frees and removes from cache memory blocks, which are not used by users.
public static FreeUnusedMemory ( ) : int
return int
        public static int FreeUnusedMemory( )
        {
            lock ( memoryBlocks )
            {
                int freedBlocks = 0;

                // free all unused memory
                for ( int i = currentCacheSize - 1; i >= 0; i-- )
                {
                    if ( memoryBlocks[i].Free )
                    {
                        Marshal.FreeHGlobal( memoryBlocks[i].MemoryBlock );
                        cachedMemory -= memoryBlocks[i].Size;
                        memoryBlocks.RemoveAt( i );
                        freedBlocks++;
                    }
                }
                currentCacheSize -= freedBlocks;

                return freedBlocks;
            }
        }
    }