Я пытаюсь имитировать диспетчер задач Windows 7 (только вкладка «Производительность») на C #, и хотя мне удалось получить большинство значений, я не могу получить кэшированные и свободные байтовые значения для физической памяти. Я знаю, что по определению они имеют в виду:
- Кэширование - это объем физической памяти, использованной в последнее время для системных ресурсов.
- Свободная - это объем памяти, который в настоящее время не используется или не содержит полезной информации (в отличие от кешированных файлов, которые действительно содержат полезную информацию).
Но ни один из моих подходов не дал точного значения, указанного в диспетчере задач. например:
Сохранено в кеше:
PerformanceCounter PC4 = new PerformanceCounter();
PC4.CategoryName = "Memory";
PC4.CounterName = "Cache Bytes";
PC4.InstanceName = "";
Console.WriteLine((Int32)(PC4.NextValue() / (1024 * 1024)));
Бесплатно:
ObjectQuery wql = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(wql);
ManagementObjectCollection results = searcher.Get();
object ob = 0;
foreach (ManagementObject result in results)
{
ob = result["FreePhysicalMemory"];
}//returns physical memory's <i>Available</i> byte, NOT <i>Free</i>
Что мне не хватает?