所有的记忆都去哪儿了?
我们已经构建了一个使用一些 COM+ 组件(由我们开发)的 Windows 服务。它在 Windows 服务器上运行(通过 vmware 虚拟化),并且某些东西正在占用内存。
内存检查
我做了一个小应用程序,它运行所有Process.GetProcesses
并返回它们的总内存使用情况:
第一次运行:
C:\Temp>ProcessExplorer.exe
Virtual: 1613Mb, Physical: 318Mb
几分钟后:
C:\Temp>ProcessExplorer.exe
Virtual: 1492Mb, Physical: 48Mb
任务管理器
查看任务管理器中的进程,我没有看到任何内存使用率较高的应用程序。但 如果我查看“性能”选项卡,就会发现没有可用内存。
我让服务器在没有我们的应用程序的情况下运行了几天,内存使用量恒定在 30% 左右。我昨天打开该应用程序,几个小时前服务器上的内存使用量已增加到大约 60%。
那么所有的记忆都去哪儿了?我如何找到它? :)
We've built a windows service which uses some COM+ components (developed by us). It runs on a Windows server (virtual through vmware) and something is eating memory.
Memory check
I did a small application which runs through all Process.GetProcesses
and return their total memory usage:
First run:
C:\Temp>ProcessExplorer.exe
Virtual: 1613Mb, Physical: 318Mb
Few minutes later:
C:\Temp>ProcessExplorer.exe
Virtual: 1492Mb, Physical: 48Mb
Task manager
Looking at processes in task manager I don't see any application with high memory usage. But
If I look at the Performance tab, no memory is available.
I have let the server run a few days without our application and the memory usage was constant at about 30%. I turned on the application yesterday and the memory usage on the server had increased to about 60% a couple of hours ago.
So where did all the memory go? How do I find it? :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Windows 的任务管理器是一个非常有限的工具 - 请查看 Process Explorer 和perfmon.msc。
Windows' Task Manager is a very limited tool - check out Process Explorer and perfmon.msc.
VmWare Tools 创建了一个内存气球来为另一个虚拟机释放内存。似乎这是 VmWare Tools 中的一个错误,因为虚拟机确实需要该内存。
我们尝试在该虚拟机上关闭 VmWare 工具,现在一切正常。
VmWare Tools created a Memory balloon to free up memory for another virtual machine. Seems like it's an bug in VmWare Tools since the virtual machine really needed that memory.
We've tried to turn of VmWare tools on that VM and everything works fine now.