Asi před necelou hodinou jsem dostal nápad, když mi na mém notebooku s 5,6GB využitelné paměti neustále naskakovala hláška ať vypnu programy xyz, však to určitě taky znáte. A tak jsem si řekl že si udělám malý program který mi zjistí které programy zabírají v paměti nejvíc. Třeba bych se chtěl někdy pochlubit někomu kolik mi v paměti zabírá který program. V třídě Process jsem našel tyto vlastnosti, z nichž ani jedna mi neřekla to co říkal Task Manager ve Windows:
long nonpagedSystemMemorySize = item.NonpagedSystemMemorySize64;
long pagedMemorySize = item.PagedMemorySize64;
long pagedSystemMemorySize = item.PagedSystemMemorySize64;
long peakPagedMemorySize = item.PeakPagedMemorySize64;
long peakVirtualMemorySize = item.PeakVirtualMemorySize64;
long privateMemorySize = item.PrivateMemorySize64;
long virtualMemorySize = item.VirtualMemorySize64;
long workingSet = item.WorkingSet64;Samozřejmě že všechny tyto metody byly dostupné i bez „64„, ale jak jsem čekal, nebylo to ono. Když jsem si projel asi 30 stránek tak jsem konečně natrefil na tento článek na CodeProject: http://web.archive.org/web/20250821023102/https://www.codeproject.com/Articles/38438/Monitoring-Process-Statistics-in-C-WPF . Zjistil jsem si kód který potřebuji, ve skutečnosti byl jednoduchý, měl jen 2 řádky z nichž první byl vytvoření instance System.Diagnostics.PerformanceCounter a druhý byl získání hodnoty z tohoto objektu. 🧠
Zkopíroval jsem to do vlastního programu, vložil do slovníku a pak dál (teď mě napadá zda to nebylo jednodušší vložit do kolekce a použít na ni Sort(IComparer)) a nakonec mi vyšlo toto (jen podotknu že tam kde u procesu není .exe je to process 64bit, jehož název exe se mi nepodařilo získat vlastností Process.MainModule.FileName a tak tam je text z Process.ProcessName):
- Idle – 24
- System – 148
RockMeltCrashHandler.exe– 344- smss – 368
- WLIDSVCM – 992
- SynTPHelper – 1016
chrome_frame_helper.exe– 1052- wininit – 1084
- atiesrxx – 1140
sqlbrowser.exe– 1160Wakoopa.exe– 1360- Fuel.Service – 1448
- sqlwriter – 1476
AppleMobileDeviceService.exe– 1560mDNSResponder.exe– 1624- AdminService – 1632
RIconMan.exe– 1648Ath_CoexAgent.exe– 1652- lsm – 1680
- wlanext – 1704
- atieclxx – 1748
- fdlauncher – 1856
- dllhost – 1880
- winlogon – 2172
GoogleUpdate.exe– 2460- SearchProtocolHost – 2464
- notepad – 2648
- conhost – 2736
- SearchFilterHost – 2776
- WLIDSVC – 2788
- taskmgr – 2820
ScrybeUpdater.exe– 3320- fdhost – 3616
NahradDiakritikuVeTrayi.exe– 3676- csrss – 3964
- SynTPEnh – 4188
- taskhost – 4744
- TCMDX64 – 4844
- ZalohaSrc.vshost – 5012
- MsDepSvc – 5308
- spoolsv – 5420
- BtvStack – 5844
- lsass – 5852
- services – 6108
- MemoryPerformanceMonitoring.vshost – 6188
- nlsvc – 6724
- wmpnetwk – 8548
TeamViewer_Service.exe– 8816- NLClientApp – 8956
- TOTALCMD.EXE – 9548
- msvsmon – 9984
test.vshost.exe– 10964- audiodg – 11428
AddInProcess32.exe– 12760scrybe.exe– 12944- dwm – 23056
googletalk.exe– 28444- ReportingServicesService – 29904
FluffyApp.exe– 31496vlc.exe– 31808- SearchIndexer – 38760
twhirl.exe– 54172- svchost – 69920
- explorer – 70224
- sqlservr – 91424
Skype.exe– 123868- MetroTwit – 132136
VCSExpress.exe– 260432chrome.exe– 775852
PS: Z nějakého důvodu jsou zde jen úlohy běžící pod nalogovaným účtem (.sunamo), ale je to úplně první verze programu, tak to zase tak moc nevadí.