以兆字节为单位获取进程ram使用情况

时间:2017-01-03 16:13:05

标签: c# memory process ram

我正在尝试检索我的控制台应用程序的ram使用情况,为此我正在使用:

var ramUsage = Process.GetCurrentProcess().WorkingSet64;

然而WorkingSet64返回的值真的很大,我认为那些是kbs,我不是100%确定我需要将数字除以1024来得到兆字节,否则我需要划分它是1024 * 1024?

任何人都可以了解Process.WorkingSet64返回的值究竟是什么。

2 个答案:

答案 0 :(得分:1)

根据the documentation,此属性返回的数字以字节为单位。

因此,要将其转换为千字节,您可以将其除以1024.要将其转换为兆字节,您可以将其除以1024 2 。等等。

答案 1 :(得分:0)

Process.WorkingSet64属性以字节为单位返回。 根据有关该属性的MSDN文章:

  

物业价值   键入:System.Int64

     

为关联进程分配的物理内存量(以字节为单位)。

https://msdn.microsoft.com/en-us/library/system.diagnostics.process.workingset64%28v=vs.110%29.aspx

在Windows中,为了获得以兆字节为单位的值,你是正确的,除以1024 * 1024

var ramAllocation = Process.GetCurrentProcess().WorkingSet64;
var allocationInMB = ramUsage / (1024 * 1024);

备注:Windows使用JEDEC标准,其中1千字节= 1024字节。 IEC标准定义1千字节= 1000字节和1千字节= 1024字节。 10.6之后的OSX使用ICE兆字节,因此1千字节= 1000字节。一些Linux发行版,如10.10之后的Ubuntu,使用ICE前缀(1 mebibyte = 1024 kibibyte和1兆字节= 1000千字节)。这就是为什么有时当你购买硬盘驱动器时,Windows(1MB = 1024kB)似乎比宣传的尺寸(通常为1MB = 1000 kB)更小。

此外,Cody Gray指出这是已分配字节的数量,而不是已用字节的数量。操作系统分配的内存多于程序使用的确切字节数,通常不会在不使用后立即回收内存。