You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: xml/System/GCMemoryInfo.xml
+8-1Lines changed: 8 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -327,7 +327,14 @@ The memory after `OBJ_D` is not considered part of the `FragmentedBytes` but is
327
327
<summary>Gets the physical memory load when the last garbage collection occurred.</summary>
328
328
<value>The physical memory load, in bytes, when the last garbage collection occurred.</value>
329
329
<remarks>
330
-
<para>On Windows, memory load is a field in the <seehref="/windows/win32/api/winbase/ns-winbase-memorystatus">MEMORYSTATUS structure</see>. It's a number between 0 and 100 that specifies the approximate percentage of physical memory that's in use (0 indicates no memory use and 100 indicates full memory use). Corresponding information is given on other operating systems.</para>
330
+
<para>When a process is not running in a container or running in a container without a memory limit:</para>
331
+
<para>- On Windows, the MemoryLoadBytes is obtained from the <seehref="/windows/win32/api/winbase/ns-winbase-memorystatus">MEMORYSTATUS structure</see> in bytes divided by the total physical memory.</para>
332
+
<para>- On Linux, the MemoryLoadBytes is obtained from reading the MemAvailable field from <c>/proc/meminfo</c> divided by the total physical memory.</para>
333
+
<para>When a process is running in a container with a memory limit or when cgroup limits are set:</para>
334
+
<para>- On Windows, the MemoryLoadBytes is obtained from the Working Set Size field in the <seehref="/windows/win32/api/psapi/nf-psapi-getprocessmemoryinfo">PROCESS_MEMORY_COUNTERS structure</see> in bytes divided by the memory limit.</para>
335
+
<para>- On Linux, the MemoryLoadBytes is obtained from the used physical memory via the CGroup Memory Usage file from <c>memory.usage_in_bytes</c> for CGroups v1 and <c>memory.current</c> for CGroups v2 divided by the memory limit. The cgroup limits don't necessarily mean there is a container. You can use cgroup to set limits on a regular process.</para>
336
+
<para>On Linux, when there is no cgroup enabled, the used physical memory is read from the <c>/proc/statm</c> file, which provides the process resident set size.</para>
337
+
<para>On Linux, the virtual memory load is also used if the virtual memory rlimit is set and if the load is larger than the physical memory load.</para>
331
338
<para>Data is only brought into physical memory on first touch. If you allocated a big object but haven't actually used it, most of its memory isn't in physical memory. In this case, the allocation won't affect the memory load significantly.</para>
0 commit comments