在开发或运维过程中,我们经常需要了解某个应用程序(进程)当前占用了多少内存。特别是在排查性能问题、内存泄漏或资源瓶颈时,C#进程内存监控就显得尤为重要。本教程将从零开始,教你如何使用C#编写一个简单的程序,实时获取并显示指定进程的内存使用情况。
当你的C#应用程序运行缓慢、频繁崩溃,或者服务器资源告急时,检查.NET内存占用检测结果是排查问题的第一步。通过监控进程内存,你可以:
- Visual Studio(社区版即可)
- .NET Framework 4.6 或 .NET Core 3.1 及以上
- 基础C#语法知识(本教程尽量简化代码,小白也能理解)
在 .NET 中,System.Diagnostics.Process 类提供了访问本地或远程计算机上进程信息的能力。其中,WorkingSet64 属性表示该进程当前使用的物理内存量(单位:字节)。
下面是一个控制台程序,它会每隔2秒输出指定进程名的内存占用情况:
using System;using System.Diagnostics;using System.Linq;using System.Threading;namespace ProcessMemoryMonitor{ class Program { static void Main(string[] args) { Console.WriteLine("请输入要监控的进程名称(例如:notepad、chrome、yourapp):"); string processName = Console.ReadLine(); while (true) { try { // 获取所有匹配名称的进程 var processes = Process.GetProcessesByName(processName); if (processes.Length == 0) { Console.WriteLine($"未找到名为 '{processName}' 的进程,请确认进程正在运行。"); Thread.Sleep(2000); continue; } foreach (var proc in processes) { // 获取工作集内存(物理内存) long memoryInBytes = proc.WorkingSet64; double memoryInMB = memoryInBytes / (1024.0 * 1024.0); Console.WriteLine($"进程ID: {proc.Id}, 内存占用: {memoryInMB:F2} MB"); } } catch (Exception ex) { Console.WriteLine($"发生错误: {ex.Message}"); } // 每2秒刷新一次 Thread.Sleep(2000); Console.Clear(); Console.WriteLine($"正在监控进程 '{processName}'... 按 Ctrl+C 退出\n"); } } }} - Process.GetProcessesByName(processName):根据进程名获取所有匹配的进程实例。
- proc.WorkingSet64:返回进程当前使用的物理内存量(字节)。
- 我们将其转换为更易读的 MB 单位(除以 1024×1024)。
- 程序每2秒清屏并重新打印最新数据,实现“实时”效果。
如果你希望构建更专业的Windows进程内存查看工具,可以考虑:
通过本教程,你已经掌握了如何使用C#进行C#性能分析中最基础也最关键的一步——监控进程内存占用。这项技能不仅适用于开发调试,也广泛应用于系统运维和性能优化场景。希望你能在此基础上继续探索,打造属于自己的监控工具!
关键词回顾:C#进程内存监控、C#性能分析、.NET内存占用检测、Windows进程内存查看。
本文由主机测评网于2025-12-21发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251210955.html