Created
October 23, 2012 11:14
-
-
Save sharat/3938242 to your computer and use it in GitHub Desktop.
Memory Info in C#
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static class MemoryInfo | |
{ | |
[DllImport("psapi.dll", SetLastError = true)] | |
[return: MarshalAs(UnmanagedType.Bool)] | |
public static extern bool GetPerformanceInfo([Out] out PerformanceInformation PerformanceInformation, [In] int Size); | |
[StructLayout(LayoutKind.Sequential)] | |
public struct PerformanceInformation | |
{ | |
public int Size; | |
public IntPtr CommitTotal; | |
public IntPtr CommitLimit; | |
public IntPtr CommitPeak; | |
public IntPtr PhysicalTotal; | |
public IntPtr PhysicalAvailable; | |
public IntPtr SystemCache; | |
public IntPtr KernelTotal; | |
public IntPtr KernelPaged; | |
public IntPtr KernelNonPaged; | |
public IntPtr PageSize; | |
public int HandlesCount; | |
public int ProcessCount; | |
public int ThreadCount; | |
} | |
public static Int64 GetPhysicalAvailableMemoryInMiB() | |
{ | |
PerformanceInformation pi = new PerformanceInformation(); | |
if (GetPerformanceInfo(out pi, Marshal.SizeOf(pi))) | |
{ | |
return Convert.ToInt64((pi.PhysicalAvailable.ToInt64() * pi.PageSize.ToInt64() / 1048576)); | |
} | |
else | |
{ | |
return -1; | |
} | |
} | |
public static Int64 GetTotalMemoryInMiB() | |
{ | |
PerformanceInformation pi = new PerformanceInformation(); | |
if (GetPerformanceInfo(out pi, Marshal.SizeOf(pi))) | |
{ | |
return Convert.ToInt64((pi.PhysicalTotal.ToInt64() * pi.PageSize.ToInt64() / 1048576)); | |
} | |
else | |
{ | |
return -1; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment