summaryrefslogtreecommitdiff
path: root/src/gc/gc.cpp
diff options
context:
space:
mode:
authorAndy Hanson <anhans@microsoft.com>2019-07-08 16:12:06 -0700
committerJan Kotas <jkotas@microsoft.com>2019-07-08 16:12:06 -0700
commit11137fbe46f524dfd6c2f7bb2a77035aa225524c (patch)
tree116160fa9d0ed8c8cb2fa1cb6ac407e476ab96cf /src/gc/gc.cpp
parent8749c016e520bcaa23c56a862fe5f57eba1b879b (diff)
downloadcoreclr-11137fbe46f524dfd6c2f7bb2a77035aa225524c.tar.gz
coreclr-11137fbe46f524dfd6c2f7bb2a77035aa225524c.tar.bz2
coreclr-11137fbe46f524dfd6c2f7bb2a77035aa225524c.zip
Return HardLimitBytes from GCMemoryInfo.TotalAvailableMemoryBytes (#25437)
* Add property HardLimitBytes to GCMemoryInfo This adds a new property HardLimitBytes. Unlike TotalAvailableMemoryBytes, this will reflect an explicitly set COMPLUS_GCHeapHardLimit. It will also reflect the fraction of a container's size that we use, where TotalAvailableMemoryBytes is the total container size. Normally, though, it is equal to TotalAvailableMemoryBytes. Fix #38821 * Remove HardLimitBytes; have TotalAvailableMemoryBytes take on its behavior * Fix typos * Separate total_physical_mem and heap_hard_limit so we can compute highMemoryLoadThresholdBytes and memoryLoadBytes * Do more work in gc.cpp instead of Gc.cs * Consistently end names in "Bytes"
Diffstat (limited to 'src/gc/gc.cpp')
-rw-r--r--src/gc/gc.cpp24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/gc/gc.cpp b/src/gc/gc.cpp
index f4d877fe88..f107b134ca 100644
--- a/src/gc/gc.cpp
+++ b/src/gc/gc.cpp
@@ -36814,17 +36814,19 @@ unsigned int GCHeap::GetCondemnedGeneration()
return gc_heap::settings.condemned_generation;
}
-void GCHeap::GetMemoryInfo(uint32_t* highMemLoadThreshold,
- uint64_t* totalPhysicalMem,
- uint32_t* lastRecordedMemLoad,
- size_t* lastRecordedHeapSize,
- size_t* lastRecordedFragmentation)
-{
- *highMemLoadThreshold = gc_heap::high_memory_load_th;
- *totalPhysicalMem = gc_heap::total_physical_mem;
- *lastRecordedMemLoad = gc_heap::last_gc_memory_load;
- *lastRecordedHeapSize = gc_heap::last_gc_heap_size;
- *lastRecordedFragmentation = gc_heap::last_gc_fragmentation;
+void GCHeap::GetMemoryInfo(uint64_t* highMemLoadThresholdBytes,
+ uint64_t* totalAvailableMemoryBytes,
+ uint64_t* lastRecordedMemLoadBytes,
+ uint32_t* lastRecordedMemLoadPct,
+ size_t* lastRecordedHeapSizeBytes,
+ size_t* lastRecordedFragmentationBytes)
+{
+ *highMemLoadThresholdBytes = (uint64_t) (((double)gc_heap::high_memory_load_th) / 100 * gc_heap::total_physical_mem);
+ *totalAvailableMemoryBytes = gc_heap::heap_hard_limit != 0 ? gc_heap::heap_hard_limit : gc_heap::total_physical_mem;
+ *lastRecordedMemLoadBytes = (uint64_t) (((double)gc_heap::last_gc_memory_load) / 100 * gc_heap::total_physical_mem);
+ *lastRecordedMemLoadPct = gc_heap::last_gc_memory_load;
+ *lastRecordedHeapSizeBytes = gc_heap::last_gc_heap_size;
+ *lastRecordedFragmentationBytes = gc_heap::last_gc_fragmentation;
}
int GCHeap::GetGcLatencyMode()