summaryrefslogtreecommitdiff
path: root/src/vm/gcenv.os.cpp
diff options
context:
space:
mode:
authorMaoni Stephens <Maoni0@users.noreply.github.com>2019-03-18 13:39:29 -0700
committerJan Kotas <jkotas@microsoft.com>2019-03-18 13:39:29 -0700
commitcf887c943bf1dee978bc863b7481686ecee8ad83 (patch)
treebf48e8c1ca9a4494a7323510e1a285e835d047ec /src/vm/gcenv.os.cpp
parentf2642ad1b4c94e21a92a5e6426f7a6556551977d (diff)
downloadcoreclr-cf887c943bf1dee978bc863b7481686ecee8ad83.tar.gz
coreclr-cf887c943bf1dee978bc863b7481686ecee8ad83.tar.bz2
coreclr-cf887c943bf1dee978bc863b7481686ecee8ad83.zip
Fix for running in a container without mem limit set on Windows; (#23297)
also fixing the LocalGC standalone case on Linux
Diffstat (limited to 'src/vm/gcenv.os.cpp')
-rw-r--r--src/vm/gcenv.os.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/vm/gcenv.os.cpp b/src/vm/gcenv.os.cpp
index 0e37931fe9..4d6a19c98d 100644
--- a/src/vm/gcenv.os.cpp
+++ b/src/vm/gcenv.os.cpp
@@ -494,16 +494,21 @@ static size_t GetRestrictedPhysicalMemoryLimit()
if ((limit_info.BasicLimitInformation.LimitFlags & JOB_OBJECT_LIMIT_WORKINGSET) != 0)
job_workingset_limit = limit_info.BasicLimitInformation.MaximumWorkingSetSize;
- job_physical_memory_limit = min (job_memory_limit, job_process_memory_limit);
- job_physical_memory_limit = min (job_physical_memory_limit, job_workingset_limit);
+ if ((job_memory_limit != (size_t)MAX_PTR) ||
+ (job_process_memory_limit != (size_t)MAX_PTR) ||
+ (job_workingset_limit != (size_t)MAX_PTR))
+ {
+ job_physical_memory_limit = min (job_memory_limit, job_process_memory_limit);
+ job_physical_memory_limit = min (job_physical_memory_limit, job_workingset_limit);
- MEMORYSTATUSEX ms;
- ::GetProcessMemoryLoad(&ms);
- total_virtual = ms.ullTotalVirtual;
- total_physical = ms.ullAvailPhys;
+ MEMORYSTATUSEX ms;
+ ::GetProcessMemoryLoad(&ms);
+ total_virtual = ms.ullTotalVirtual;
+ total_physical = ms.ullAvailPhys;
- // A sanity check in case someone set a larger limit than there is actual physical memory.
- job_physical_memory_limit = (size_t) min (job_physical_memory_limit, ms.ullTotalPhys);
+ // A sanity check in case someone set a larger limit than there is actual physical memory.
+ job_physical_memory_limit = (size_t) min (job_physical_memory_limit, ms.ullTotalPhys);
+ }
}
}