public static bool IsMemoryEnoughToCacheChunk(ulong chunkSize, uint maxUseMemoryPercent, out ChunkApplyMemoryInfo applyMemoryInfo) { applyMemoryInfo = new ChunkApplyMemoryInfo(); uint bytesPerMB = 1024 * 1024; var computerInfo = new ComputerInfo(); var usedMemory = computerInfo.TotalPhysicalMemory - computerInfo.AvailablePhysicalMemory; applyMemoryInfo.PhysicalMemoryMB = computerInfo.TotalPhysicalMemory / bytesPerMB; applyMemoryInfo.AvailableMemoryMB = computerInfo.AvailablePhysicalMemory / bytesPerMB; applyMemoryInfo.UsedMemoryMB = usedMemory / bytesPerMB; applyMemoryInfo.UsedMemoryPercent = applyMemoryInfo.UsedMemoryMB * 100 / applyMemoryInfo.PhysicalMemoryMB; applyMemoryInfo.ChunkSizeMB = chunkSize / bytesPerMB; applyMemoryInfo.MaxAllowUseMemoryMB = applyMemoryInfo.PhysicalMemoryMB * maxUseMemoryPercent / 100; return(applyMemoryInfo.UsedMemoryMB + applyMemoryInfo.ChunkSizeMB <= applyMemoryInfo.MaxAllowUseMemoryMB); }
public static bool IsMemoryEnoughToCacheChunk(ulong chunkSize, uint maxUseMemoryPercent, out ChunkApplyMemoryInfo applyMemoryInfo) { applyMemoryInfo = new ChunkApplyMemoryInfo(); uint bytesPerMB = 1024 * 1024; var computerInfo = new ComputerInfo(); var usedMemory = computerInfo.TotalPhysicalMemory - computerInfo.AvailablePhysicalMemory; applyMemoryInfo.PhysicalMemoryMB = computerInfo.TotalPhysicalMemory / bytesPerMB; applyMemoryInfo.AvailableMemoryMB = computerInfo.AvailablePhysicalMemory / bytesPerMB; applyMemoryInfo.UsedMemoryMB = usedMemory / bytesPerMB; applyMemoryInfo.UsedMemoryPercent = applyMemoryInfo.UsedMemoryMB * 100 / applyMemoryInfo.PhysicalMemoryMB; applyMemoryInfo.ChunkSizeMB = chunkSize / bytesPerMB; applyMemoryInfo.MaxAllowUseMemoryMB = applyMemoryInfo.PhysicalMemoryMB * maxUseMemoryPercent / 100; return applyMemoryInfo.UsedMemoryMB + applyMemoryInfo.ChunkSizeMB <= applyMemoryInfo.MaxAllowUseMemoryMB; }