相关疑难解决方法(0)

列出所有进程及其当前内存和CPU消耗?

如何获取C#中的所有进程列表,然后获取每个进程当前内存和CPU消耗?

示例代码非常感谢.

.net c# memory-management performancecounter cpu-usage

16
推荐指数
1
解决办法
3万
查看次数

如何用C#测量内存使用量(我们可以用Java做)?

我试图在C#程序中测量内存使用情况.

我想知道这个Java函数的C#等价物:

ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getCommitted()
Run Code Online (Sandbox Code Playgroud)

表示为堆分配的总内存.我需要知道为C#programm分配的内存总大小.

然后在Java中我可以得到用过的内存:

ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed()
Run Code Online (Sandbox Code Playgroud)

目前我在C#中使用它来获取已用内存:

Process_Memory = MyProcess.PrivateMemorySize64;
Run Code Online (Sandbox Code Playgroud)

但我并不完全确定它是等同的.

那么在恢复中如何获得我的C#应用​​程序的总分配空间以及当前在时间t的使用

编辑:

从答案和进一步的研究中我确定了这个:

当前使用的内存

System.GC.GetTotalMemory(false);
Run Code Online (Sandbox Code Playgroud)

给出当前在托管内存中分配的字节数.(http://msdn.microsoft.com/fr-fr/library/system.gc.gettotalmemory.aspx)

该方法返回一个值较低,而我敢肯定它不是真正使用的所有内存的表示,我可以用得到getUsed()Java的.在java中,对于相同的应用程序,使用的内存从5MB开始,最大为125MB.使用C#,我使用上述方法从1到5 MB.

看起来 :

MyProcess.PrivateMemorySize64; // return ~=25MB
Run Code Online (Sandbox Code Playgroud)

要么

MyProcess.WorkingSet64;  //return ~=20MB
Run Code Online (Sandbox Code Playgroud)

为所有正在使用的内存提供更准确的值.但我不知道应该使用哪一个......

对于全局分配的内存, 本文建议使用:

Process_MemoryEnd1 = MyProcess.VirtualMemorySize64;
Run Code Online (Sandbox Code Playgroud)

它在程序中总是返回相同的值,大约169MB,与Java相比似乎是公平的:从64MB到170MB最大

我仍然在寻找一个准确的答案,我发现它非常模糊,而且我对Windows内存管理不是很熟悉,我真的不确定我发现的文档:/

c# java memory memory-management

15
推荐指数
2
解决办法
2万
查看次数