Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than Structures, prefix the name with the module name and a period.
MEMORYSTATUSEX (Structures)
.
Notes:
The CLR offer us no way to tell us that memory is getting tight. Many think this API provides the best solution. This is mentioned by Jeffrey Richter in his book 'CLR via C#' ISBN: 0-7356-2163-2. It is useful in determining if your system is under excessive memory load by looking at the dwMemoryLoad member of the MEMORYSTATUSEX structure. If this value is > 80 (per Mr. Richter in his discussion of Garbage Collection), it is an indication that you might want to consider converting some strong references into weak references. Remember that a weakreference type will be collected when Generation 0 is full, so it is not a good technique for caching (as many seem to think).
C# Definition:
/// <summary>
/// contains information about the current state of both physical and virtual memory, including extended memory
/// </summary>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public class MEMORYSTATUSEX
{
/// <summary>
/// Size of the structure, in bytes. You must set this member before calling GlobalMemoryStatusEx.
/// </summary>
public uint dwLength;
/// <summary>
/// Number between 0 and 100 that specifies the approximate percentage of physical memory that is in use (0 indicates no memory use and 100 indicates full memory use).
/// </summary>
public uint dwMemoryLoad;
/// <summary>
/// Total size of physical memory, in bytes.
/// </summary>
public ulong ullTotalPhys;
/// <summary>
/// Size of physical memory available, in bytes.
/// </summary>
public ulong ullAvailPhys;
/// <summary>
/// Size of the committed memory limit, in bytes. This is physical memory plus the size of the page file, minus a small overhead.
/// </summary>
public ulong ullTotalPageFile;
/// <summary>
/// Size of available memory to commit, in bytes. The limit is ullTotalPageFile.
/// </summary>
public ulong ullAvailPageFile;
/// <summary>
/// Total size of the user mode portion of the virtual address space of the calling process, in bytes.
/// </summary>
public ulong ullTotalVirtual;
/// <summary>
/// Size of unreserved and uncommitted memory in the user mode portion of the virtual address space of the calling process, in bytes.
/// </summary>
public ulong ullAvailVirtual;
/// <summary>
/// Size of unreserved and uncommitted memory in the extended portion of the virtual address space of the calling process, in bytes.
/// </summary>
public ulong ullAvailExtendedVirtual;
/// <summary>
/// Initializes a new instance of the <see cref="T:MEMORYSTATUSEX"/> class.
/// </summary>
public MEMORYSTATUSEX()
{
this.dwLength = (uint)Marshal.SizeOf(typeof(NativeMethods.MEMORYSTATUSEX));
}
}
VB Definition:
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Public Class MEMORYSTATUSEX
''' <summary>
''' Initializes a new instance of the <see cref="T:MEMORYSTATUSEX" /> class.
''' </summary>
Public Sub New()
Me.dwLength = CType(Marshal.SizeOf(GetType(MEMORYSTATUSEX)), UInt32)
End Sub
''' <summary>
''' Initializes a new instance of the <see cref="T:MEMORYSTATUSEX" /> class.
''' </summary>
Public Sub New()
Me.dwLength = CType(Marshal.SizeOf(GetType(MEMORYSTATUSEX)), UInt32)
End Sub
' Fields
''' <summary>
''' Size of the structure, in bytes. You must set this member before calling GlobalMemoryStatusEx.
''' </summary>
Public dwLength As UInt32
''' <summary>
''' Number between 0 and 100 that specifies the approximate percentage of physical memory that is in use (0 indicates no memory use and 100 indicates full memory use).
''' </summary>
Public dwMemoryLoad As UInt32
''' <summary>
''' Total size of physical memory, in bytes.
''' </summary>
Public ullTotalPhys As UInt64
''' <summary>
''' Size of physical memory available, in bytes.
''' </summary>
Public ullAvailPhys As UInt64
''' <summary>
''' Size of the committed memory limit, in bytes. This is physical memory plus the size of the page file, minus a small overhead.
''' </summary>
Public ullTotalPageFile As UInt64
''' <summary>
''' Size of available memory to commit, in bytes. The limit is ullTotalPageFile.
''' </summary>
Public ullAvailPageFile As UInt64
''' <summary>
''' Total size of the user mode portion of the virtual address space of the calling process, in bytes.
''' </summary>
Public ullTotalVirtual As UInt64
''' <summary>
''' Size of unreserved and uncommitted memory in the user mode portion of the virtual address space of the calling process, in bytes.
''' </summary>
Public ullAvailVirtual As UInt64
''' <summary>
''' Size of unreserved and uncommitted memory in the extended portion of the virtual address space of the calling process, in bytes.
''' </summary>
Public ullAvailExtendedVirtual As UInt64
End Class
' Fields
''' <summary>
''' Size of the structure, in bytes. You must set this member before calling GlobalMemoryStatusEx.
''' </summary>
Public dwLength As UInt32
''' <summary>
''' Number between 0 and 100 that specifies the approximate percentage of physical memory that is in use (0 indicates no memory use and 100 indicates full memory use).
''' </summary>
Public dwMemoryLoad As UInt32
''' <summary>
''' Size of unreserved and uncommitted memory in the extended portion of the virtual address space of the calling process, in bytes.
''' </summary>
Public ullAvailExtendedVirtual As UInt64
''' <summary>
''' Size of available memory to commit, in bytes. The limit is ullTotalPageFile.
''' </summary>
Public ullAvailPageFile As UInt64
''' <summary>
''' Size of physical memory available, in bytes.
''' </summary>
Public ullAvailPhys As UInt64
''' <summary>
''' Size of unreserved and uncommitted memory in the user mode portion of the virtual address space of the calling process, in bytes.
''' </summary>
Public ullAvailVirtual As UInt64
''' <summary>
''' Size of the committed memory limit, in bytes. This is physical memory plus the size of the page file, minus a small overhead.
''' </summary>
Public ullTotalPageFile As UInt64
''' <summary>
''' Total size of physical memory, in bytes.
''' </summary>
Public ullTotalPhys As UInt64
''' <summary>
''' Total size of the user mode portion of the virtual address space of the calling process, in bytes.
''' </summary>
Public ullTotalVirtual As UInt64
End Class
User-Defined Field Types:
None.
Notes:
The GlobalMemoryStatusEx API
5/26/2016 9:13:28 AM - -93.84.28.162
TODO - a short description
3/16/2007 8:17:31 AM - -63.69.129.2
Click to read this page
4/6/2008 7:23:14 AM - anonymous
The GlobalMemoryStatusEx API
5/26/2016 9:13:28 AM - -93.84.28.162
MEMORYSTATUSEX is used by GlobalMemoryStatusEx
5/26/2016 9:15:30 AM - Pieter Huizinga-89.98.143.220
Please edit this page!
Do you have...
helpful tips?
corrections to the existing content?
alternate definitions?
additional languages you want to include?
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing any supporting types needed.