C# 메모리 강제 회수

GC.Collect()를 사용하였지만 정말 획기적으로 줄지 않아서 사용하게 되는것입니다.

using System.Runtime.InteropServices; 

//
[DllImportAttribute("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)] 

//
private static extern int SetProcessWorkingSetSize(IntPtr process, int minimumWorkingSetSize, int maximumWorkingSetSize); 

/// <summary>
/// 강제 메모리 회수 
/// </summary>
public static void FlushMemory() 
{ 
	GC.Collect(); 
	GC.WaitForPendingFinalizers(); 

	if (Environment.OSVersion.Platform == PlatformID.Win32NT) 
	{ 
		SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1); 
	} 
} 

남발을 할 경우 사용상에도 문제가 있고 하니, 적절히 필요한 부분에서 사용을 해야 될듯 싶습니다.

저 같은 경우은 datagridview를 몇개를 사용하다 보니 도저히 메모리 관리가 되지 않아서 지워준 경우가 됩니다. datagridview를 사용해서 표현은 하지만 Row 마다 수정은 막혀 있기도 하고 풀어 놓기도 해서 입니다.

수정 권한이 있는 사용자에게는 단순히 data를 보여주기만 하면 되어서 큰 문제가 없어서 메모리를 관리를 하는 용도로 사용을 합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다