当前位置 : 主页 > 编程语言 > c语言 >

C# – 如何判断系统是否有虚拟内存/页面文件?

来源:互联网 收集:自由互联 发布时间:2021-06-25
我有一个应用程序,它消耗了我部署给用户的大量RAM.我的一些用户在运行时遇到了内存不足的异常 – 我注意到这是因为他们关闭了系统页面文件(因为这些天谁会使用16GB的内存?叹息…
我有一个应用程序,它消耗了我部署给用户的大量RAM.我的一些用户在运行时遇到了内存不足的异常 – 我注意到这是因为他们关闭了系统页面文件(因为这些天谁会使用16GB的内存?叹息……).我想检测用户是否将其设置为关闭(或者可能是其他一些设置),因此我可以向他们发出警告,因为我们有很多用户来找我们寻求支持,我想让一些用户自动化,因为他们正在吃饭我们有很多时间.

我google了,似乎无法找到获取页面文件信息的方法.具体来说,我在谈论您可以在Windows中的此页面中看到的信息:

我知道这是我们的最终用户问题,与我们的应用程序无关(我们的应用程序旨在消耗大量内存并获得显着的速度优势).我不确定如何检测这些设置 – 有没有人有想法?

您需要事先添加对System.Management的引用.

AllocatedBaseSize将以MB为单位显示当前页面文件大小

using (var query = new ManagementObjectSearcher("SELECT AllocatedBaseSize FROM Win32_PageFileUsage"))
        {
            foreach (ManagementBaseObject obj in query.Get())
            {
                uint used = (uint)obj.GetPropertyValue("AllocatedBaseSize");
                Console.WriteLine(used);
            }
        }

虽然MaximumSize将以MB为单位显示最大页面文件大小,但如果用户设置了最大大小(如果系统管理它,则查询将不返回任何内容).

using (var query = new ManagementObjectSearcher("SELECT MaximumSize FROM Win32_PageFileSetting"))
        {
            foreach (ManagementBaseObject obj in query.Get())
            {
                uint max = (uint)obj.GetPropertyValue("MaximumSize");
                Console.WriteLine(max);
            }
        }

如果AllocatedBaseSize小于您的应用程序将使用的,并且MaximumSize足够大,适合您的应用程序(或它的系统管理),您将需要考虑存储空间不足以使Windows增长页面文件的边缘情况.即使开头有足够的空间,用户也可以在其他程序上下载大文件或在运行应用程序时渲染大型视频.考虑提供“低存储”模式,您的应用可能运行速度较慢但不会消耗尽可能多的内存.

网友评论