有一些内存问题的一个32位的过程中Windows我开始使用性能的监测要记录某些专柜,为这一进程。

虽然这是正常的虚拟字高于私营字节和工作组,我发现在我的情况有很大差异,虚拟字节是 很多 高于这两个专用字节和工作组。

什么具体行动和Win32/传职能(C或C++)将增加虚拟字节但不是私人的字节和工作组?

我猜它会以某种共有资源,如果我理解的描述不同的柜台在绩效监测。


因为似乎有一些(至少可以说)混淆在命名的公约要用于存储柜台在不同版本的Windows以及在不同的应用程序在同一个版本的Windows,我放在一起如下:

信息从MSDN

根据 MSDN存限制适用于Windows的版本, 用户模地址的虚拟空间限制在32位的每个32位进程通常是2GB。它可以达到3GB IMAGE_FILE_LARGE_ADDRESS_AWARE4GT.

下面是说明不同的柜台在绩效监测沿用相应列在任务经理和Win32结构持有的信息,根据 MSDN-存储性能信息.

虚拟字节

虚拟字节的电流大小的地址的虚拟空间的过程使用。使用的地址的虚拟空间并不一定意味着使用相应的磁盘或主要存储页。虚拟空间是有限的,而过程中可以限制其加载库的能力。

任务主管XP:N/A
任务主管Vista:N/A
结构: MEMORYSTATUSEX.ullTotalVirtual-MEMORYSTATUSEX.ullAvailVirtual

私字节

私字节的电流大小的记忆,这一进程已经分配,不能将共同与其他进程。

任务主管XP:VM大小
任务主管Vista:提交大小
结构: PROCESS_MEMORY_COUNTERS_EX.PrivateUsage

工作组

工作组是目前的大小、字节,工作组这一进程。工作组设定的存储页触及最近通过的程的过程。如果免费存储在计算机上述阈值,网页都留在工作设置的一个过程,即使他们是不是在使用。当免费存储器低于阈值,页面被修剪的工作组。如果他们需要它们然后将软错误的方式返回工作设置在离开主存储器。

任务主管XP:存使用
任务主管Vista:工作组
结构: PROCESS_MEMORY_COUNTERS_EX.WorkingSetSize

有帮助吗?

解决方案

事(可能)增加虚拟字节不增加专用字节我想现在:

  • 二进制文件常常是共用(即不是私人的),但是占据显着的地址空间。这甚至可以大于二进制

  • 使用VirtualAlloc保留顺序地址空间而不提交/访问。定义存管理人员可能会这样做。

  • 使用的存储器映的文件(没有完全的访问)

其他提示

通过使用的VirtualAlloc,可以不实际分配任何物理存储器分配虚拟地址空间。这应该增加“虚拟字节”计数,但不是你的工作集的大小。

在出的存储器可以通过地址空间运行,因为保留过多的地址空间而引起的。

你是什么编程语言?

在管理框架,专用字节表示由非托管资源分配的数据。 而虚拟字节代表总的内存使用情况(非托管和管理的数据)。

因此,这是非常普遍地看到在这样的框架专用和虚拟字节之间的实质差异。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top