我有一个C#控制台程序,显然导致内存泄漏。但是除了跟踪内存泄漏的问题之外,真正令人困惑的是,即使程序关闭并且不再显示在任务管理器中,内存泄漏也不会被清除。
这怎么可能?也许这给出了泄漏性质的线索?
证据:此处的任务管理器显示超过24GB的使用情况:
与此同时,我的进程没有出现在“进程”选项卡中,并且快速了解其他进程使用的内存量,并结合滚动条的大小显示没有办法这些数字将增加到24 GB:
答案 0 :(得分:3)
它可能是在VM上运行的工件吗?
参见这篇文章:
这是对具有动态内存的VM可能发生的事情的另一个更简洁的解释:
http://blog.luxem.org/2013/05/driver-locked-memory-on-hyper-v-guests.html
我自己就遇到过这个问题,直到找到这些博客帖子时才感到很困惑。
答案 1 :(得分:3)
您的系统使用AWE Address Windowing Extensions,它允许您的SQL Server快速操作物理内存。数据库管理系统需要访问大型数据缓存,但由于应用程序的限制为2GB,因此这些DMS从AWE获取内存。
To" fix"这个你必须将max server memory
设置为更小的值,这样你的SQL Server就不会使用你所有的内存。