Skip to content
Merged
6 changes: 4 additions & 2 deletions xml/System/GCMemoryInfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -319,9 +319,11 @@ The memory after `OBJ_D` is not considered part of the `FragmentedBytes` but is
<para>When a process is not running in a container or running in a container without a memory limit:
On Windows, the MemoryLoadBytes is obtained from the <see href="/windows/win32/api/winbase/ns-winbase-memorystatus">MEMORYSTATUS structure</see> in bytes divided by the total physical memory.
On Linux, the MemoryLoadBytes is obtained from reading the MemAvailable field from `/proc/meminfo` divided by the total physical memory.</para>
<para>When a process is running in a container with a memory limit:
<para>When a process is running in a container with a memory limit or when cgroup limits are set:
On Windows, the MemoryLoadBytes is obtained from the Working Set Size field in the <see href="/windows/win32/api/psapi/nf-psapi-getprocessmemoryinfo">PROCESS_MEMORY_COUNTERS structure</see> in bytes divided by the memory limit.
On Linux, the MemoryLoadBytes is obtained from the used physical memory via the CGroup Memory Usage file from `/memory.usage_in_bytes` for CGroups v1 and `/memory.current` for CGroups v2 divided by the memory limit.</para>
On Linux, the MemoryLoadBytes is obtained from the used physical memory via the CGroup Memory Usage file from `/memory.usage_in_bytes` for CGroups v1 and `/memory.current` 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>
<para>On Linux, when there is no cgroup enabled, the used physical memory is read from the `/proc/statm` file, which provides the process resident set size.</para>
<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>
<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>
</remarks>
</Docs>
Expand Down