MemoryUsageStatus GetMemoryUsageStatus() { long memoryUsageBytes = this.GetTotalMemoryUsage(); double usagePercentage = (this.maxSize <= 1) ? 100 : (double)memoryUsageBytes * 100 / this.maxSize; Events.MemoryUsageStats(memoryUsageBytes, usagePercentage, this.maxSize); MemoryUsageStatus memoryUsageStatus = GetMemoryUsageStatus(usagePercentage); if (memoryUsageStatus != MemoryUsageStatus.Available) { Events.HighMemoryUsageDetected(usagePercentage, this.maxSize); } this.memoryUsageStatus = memoryUsageStatus; return(memoryUsageStatus); }
public void SetMaxSizeBytes(Option <long> maxSizeBytes) { if (maxSizeBytes.HasValue) { this.isEnabled = true; maxSizeBytes.ForEach(x => { this.maxSize = x; Events.SetMaxMemorySpaceUsage(x); }); } else { this.isEnabled = false; this.memoryUsageStatus = MemoryUsageStatus.Unknown; Events.Disabled(); this.maxSize = long.MaxValue; } }
public MemorySpaceChecker(Func <long> getTotalMemoryUsage) { this.getTotalMemoryUsage = Preconditions.CheckNotNull(getTotalMemoryUsage, nameof(getTotalMemoryUsage)); this.maxSize = long.MaxValue; this.memoryUsageStatus = MemoryUsageStatus.Unknown; }