如何在C#中获取Visual Studio显示的进程总内存使用量?
在C#中获取与Visual Studio一致的进程内存使用量
你遇到的问题是因为Process.GetCurrentProcess().WorkingSet64获取的是进程工作集,包含了和其他进程共享的内存(比如系统DLL),而Visual Studio悬停显示的通常是私有工作集——也就是进程独占的物理内存,不包含共享部分,所以数值会更大。
要获取和VS显示一致的数值,你需要根据VS实际显示的指标选择对应的Process属性:
1. 获取私有工作集(VS最常显示的指标)
使用PrivateMemorySize64属性,它返回进程独占的物理内存大小:
using System.Diagnostics; var process = Process.GetCurrentProcess(); long privateMemMB = process.PrivateMemorySize64 / 1024 / 1024; Console.WriteLine($"私有工作集:{privateMemMB} MB");
2. 获取提交内存大小(若VS显示的是提交值)
如果VS显示的是提交内存(进程向系统申请的虚拟内存总大小),使用VirtualMemorySize64:
long virtualMemMB = process.VirtualMemorySize64 / 1024 / 1024; Console.WriteLine($"提交内存大小:{virtualMemMB} MB");
关键属性区别
WorkingSet64:进程当前加载到物理内存的总页面,包含共享资源,数值通常偏小。PrivateMemorySize64:进程独占的物理内存,对应VS默认显示的“私有工作集”。VirtualMemorySize64:进程已提交的虚拟内存总量,包含未实际使用的部分。
内容的提问来源于stack exchange,提问作者SValley_Dev
相关产品推荐
相关产品推荐

