示例#1
0
        public SystemMemoryInfo()
        {
            var pi = new PERFORMANCE_INFORMATION();

            if (NativeMethods.GetPerformanceInfo(out pi, Marshal.SizeOf(pi)))
            {
                var pageSize = (long)pi.PageSize;
                var f        = new Func <UIntPtr, long>(p => (long)p * pageSize);

                CommitTotalPages       = f(pi.CommitTotal);
                CommitLimitPages       = f(pi.CommitLimit);
                CommitPeakPages        = f(pi.CommitPeak);
                PhysicalTotalBytes     = f(pi.PhysicalTotal);
                PhysicalAvailableBytes = f(pi.PhysicalAvailable);
                PhysicalUsedBytes      = PhysicalTotalBytes - PhysicalAvailableBytes;
                SystemCacheBytes       = f(pi.SystemCache);
                KernelTotalBytes       = f(pi.KernelTotal);
                KernelPagedBytes       = f(pi.KernelPaged);
                KernelNonPagedBytes    = f(pi.KernelNonpaged);
                PageSizeBytes          = pageSize;
                MemoryUsage            = Math.Round(((double)PhysicalUsedBytes / PhysicalTotalBytes) * 100);
                HandlesCount           = (int)pi.HandleCount;
                ProcessCount           = (int)pi.ProcessCount;
                ThreadCount            = (int)pi.ThreadCount;
            }
        }
 public static extern bool GetPerformanceInfo([Out] out PERFORMANCE_INFORMATION pPerformanceInformation, [In] int cb);