C# 虚拟内存分页文件的测试

C# 虚拟内存分页文件的测试,c#,virtual-memory,C#,Virtual Memory,我在某些事情上真的很艰难。我使用的是C,我希望能够检查虚拟内存分页文件当前是否已启用,或者其最大大小是否大于0,以更容易测试的为准 我还没有找到任何方法,如果有,请告诉我!,但是我想我可以通过检查我的程序/进程在分页文件中使用了多少内存,甚至是允许使用多少内存来间接实现我的目标 因此,我使用了Process.PagedMemorySize64和Process.PagedSystemMemorySize64函数,但即使禁用了分页文件,它们也会返回正数!其他地方告诉我,如果分页文件不可用,这些函数将

我在某些事情上真的很艰难。我使用的是C,我希望能够检查虚拟内存分页文件当前是否已启用,或者其最大大小是否大于0,以更容易测试的为准

我还没有找到任何方法,如果有,请告诉我!,但是我想我可以通过检查我的程序/进程在分页文件中使用了多少内存,甚至是允许使用多少内存来间接实现我的目标

因此,我使用了Process.PagedMemorySize64和Process.PagedSystemMemorySize64函数,但即使禁用了分页文件,它们也会返回正数!其他地方告诉我,如果分页文件不可用,这些函数将告诉我有关物理内存的信息。太好了,因为这对我没什么帮助

因此,如果有人知道如何实际获取有关当前进程或整个计算机在分页文件中使用或允许使用的内存量的任何信息,我将不胜感激


注意:作为一个相关的问题,有没有人在试图将数组写入循环中的文件流时遇到OutOfMemoryException?我的意思是,当时我实际上没有分配任何内存,只有在我尝试编写大型文件时才会发生这种情况——小文件写得很好。

您可以使用WMI来实现这一点。这是一个示例,但在您的情况下,您应该使用Win32\u进程,而不是表Win32\u操作系统。我想$SELECT PageFileUsage FROM Win32_Process,其中ProcessId={Process.GetCurrentProcess.Id}应该可以工作。也许Win32_PageFileUsage对您也有用。关于你的PS:不,这不应该发生。由于FileStream只支持字节数组,您究竟如何将数组写入文件?我正在编写字节数组。select语句是怎么回事?我没有使用数据库,只是C。这是Linq的东西还是类似的东西?哦,我需要为这些东西包含任何DLL吗?我宁愿不这样做,这样我可以让我的程序更简单,以便发布,但如果我必须的话,我会使用DLL,但我需要知道是哪一个。谢谢。您可能需要将System.Management.dll添加到项目引用中,但我认为您不需要分发它,因为它是.NET framework的一部分。关于select,Microsoft只是选择使用类似SQL的语法来使用WMI查询系统信息,它们不涉及数据库。我查看了您给出的示例以及在MSDN上找到的一些内容,但它似乎与我前面提到的函数做了几乎相同的事情,这些函数没有完成我需要的功能。也就是说,除非我错过了一个函数或者别的什么。你知道有哪一个能告诉我有关页面文件使用情况的特定文件吗,无论是全局的还是进程的?他们使用的字符串索引器的问题是没有自动完成功能,而且对于特定字符串可能几乎没有文档!但是如果你能告诉我正确的人的名字,谢谢!