ObsazenaPametProgramy – program na skutečně pár řádků

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:

C#
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 – 1160
  • Wakoopa.exe – 1360
  • Fuel.Service – 1448
  • sqlwriter – 1476
  • AppleMobileDeviceService.exe – 1560
  • mDNSResponder.exe – 1624
  • AdminService – 1632
  • RIconMan.exe – 1648
  • Ath_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 – 12760
  • scrybe.exe – 12944
  • dwm – 23056
  • googletalk.exe – 28444
  • ReportingServicesService – 29904
  • FluffyApp.exe – 31496
  • vlc.exe – 31808
  • SearchIndexer – 38760
  • twhirl.exe – 54172
  • svchost – 69920
  • explorer – 70224
  • sqlservr – 91424
  • Skype.exe – 123868
  • MetroTwit – 132136
  • VCSExpress.exe – 260432
  • chrome.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í.

Napsat komentář