선언:
C#
[DllImport("psapi")]
public static extern Boolean EmptyWorkingSet(IntPtr hProcess);
VB.NET
<DllImport("psapi")> _
Public Shared Function EmptyWorkingSet(ByVal hProcess As IntPtr) As Boolean
End Function
사용 예제:
C#
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace ApiReference {
class Program {
[DllImport("psapi")]
public static extern Boolean EmptyWorkingSet(IntPtr hProcess);
public static void Main(string[] args) {
Int64 cleanedMemories = 0;
foreach (Process p in Process.GetProcesses()) {
try {
Int64 ws = p.WorkingSet64;
EmptyWorkingSet(p.Handle);
p.Refresh();
cleanedMemories += (ws - p.WorkingSet64);
} catch { }
}
Console.WriteLine("정리된 메모리: {0:N0} KB", cleanedMemories / 1000);
Console.ReadKey(true);
}
}
}
VB.NET
Imports System.Diagnostics
Imports System.Runtime.InteropServices
Namespace ApiReference
Class Program
<DllImport("psapi")> _
Public Shared Function EmptyWorkingSet(hProcess As IntPtr) As [Boolean]
End Function
Public Shared Sub Main(args As String())
Dim cleanedMemories As Int64 = 0
For Each p As Process In Process.GetProcesses()
Try
Dim ws As Int64 = p.WorkingSet64
EmptyWorkingSet(p.Handle)
p.Refresh()
cleanedMemories += (ws - p.WorkingSet64)
Catch
End Try
Next
Console.WriteLine("정리된 메모리: {0:N0} KB", cleanedMemories \ 1000)
Console.ReadKey(True)
End Sub
End Class
End Namespace
예제 실행 결과:
매개 변수 설명:
hProcess - 작업 집합 메모리에서 페이지를 정리할 프로세스의 핸들을 입력합니다.
API 설명:
작업 집합 메모리에 있는 페이지를 최대한 제거합니다.
참고:
EmptyWorkingSet (MSDN)
요구 사항:
Windows XP 이상
비고:
이 API를 사용하기 위해서는 프로세스 핸들에 PROCESS_SET_QUOTA 권한과 PROCESS_QUERY_INFORMATION 또는 PROCESS_QUERY_LIMITED_INFORMATION 권한이 있어야 합니다.
SetProcessWorkingSetSize 또는 SetProcessWorkingSetSizeEx API를 이용해도 똑같은 결과를 낼 수 있습니다.
'API Reference' 카테고리의 다른 글
49. PROCESS_MEMORY_COUNTERS (0) | 2014.12.11 |
---|---|
48. GetDiskFreeSpace (0) | 2014.12.09 |
46. GetFileSize (0) | 2014.11.09 |
45. OpenFile (0) | 2014.11.09 |
44. OFSTRUCT (0) | 2014.11.09 |