diff options
author | Maoni Stephens <Maoni0@users.noreply.github.com> | 2019-03-18 13:39:29 -0700 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2019-03-18 13:39:29 -0700 |
commit | cf887c943bf1dee978bc863b7481686ecee8ad83 (patch) | |
tree | bf48e8c1ca9a4494a7323510e1a285e835d047ec /src/vm/gcenv.os.cpp | |
parent | f2642ad1b4c94e21a92a5e6426f7a6556551977d (diff) | |
download | coreclr-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.cpp | 21 |
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); + } } } |