一周后Memoryusage下降

时间:2011-05-18 11:35:30

标签: vb.net

我有这个用VB.Net编写的应用程序,其中winforms在大屏幕显示器上显示一些统计数据和图片。我还使用它监视悲伤应用程序的内存使用情况。

 Process.WorkingSet64

我知道Windows并不总是报告正确的用法,但我只是想知道我是否没有任何小内存泄漏,但我现在已经解决了。但第一周内存使用量约为100MB,第二周内存使用量约为50MB。

那么为什么在运行完全相同的代码的同时突然下降呢? 我很难想象垃圾收集器因为应用程序每10秒刷新一次就开始这么做了,并且在这些时间段之间有充足的时间来做这件事。

或许有更好的方法来获得更可靠的进程的内存使用。

1 个答案:

答案 0 :(得分:4)

Process.WrokingSet64没有报告内存使用情况,它省略了交换到磁盘的内存:

  

此属性返回的值表示进程使用的工作集内存的当前大小。进程的工作集是物理RAM内存中进程当前可见的一组内存页。这些页面是常驻的,可供应用程序使用而不会触发页面错误。 (MSDN

即使您的系统永远不会占用可用内存,您可能已将应用程序窗口最小化,从而导致Windows trim its working set

如果您想查找内存泄漏,则应该使用Process.PrivateMemorySize64代替。您的共享内存将只包含可执行代码,并且在整个过程中它将保持或多或少不变,因此您应该专注于私有内存。