我有这个用VB.Net编写的应用程序,其中winforms在大屏幕显示器上显示一些统计数据和图片。我还使用它监视悲伤应用程序的内存使用情况。
Process.WorkingSet64
我知道Windows并不总是报告正确的用法,但我只是想知道我是否没有任何小内存泄漏,但我现在已经解决了。但第一周内存使用量约为100MB,第二周内存使用量约为50MB。
那么为什么在运行完全相同的代码的同时突然下降呢? 我很难想象垃圾收集器因为应用程序每10秒刷新一次就开始这么做了,并且在这些时间段之间有充足的时间来做这件事。
或许有更好的方法来获得更可靠的进程的内存使用。
答案 0 :(得分:4)
Process.WrokingSet64
没有报告内存使用情况,它省略了交换到磁盘的内存:
此属性返回的值表示进程使用的工作集内存的当前大小。进程的工作集是物理RAM内存中进程当前可见的一组内存页。这些页面是常驻的,可供应用程序使用而不会触发页面错误。 (MSDN)
即使您的系统永远不会占用可用内存,您可能已将应用程序窗口最小化,从而导致Windows trim its working set。
如果您想查找内存泄漏,则应该使用Process.PrivateMemorySize64
代替。您的共享内存将只包含可执行代码,并且在整个过程中它将保持或多或少不变,因此您应该专注于私有内存。