voi*_*ter 6 c++ windows memory-management
Windows中的内存管理方案非常复杂,我正在尝试更好地理解它,以便更准确地诊断内存问题.
例如,我们的C++应用程序(在SysInternal的Process Explorer中)显示1.4GB"虚拟大小",400MB"私有字节"和366MB"工作集".
我做了一些研究,发现了这个问题: 什么是私有字节,虚拟字节,工作集?
这是一个很好的阅读,但有些事情仍然没有加起来.具体而言,最高投票答案表明虚拟字节包括备用列表.我不确定这些是什么,我所做的任何研究对它的解释都不太友好.我最大的问题是:将页面移动到备用列表会如何影响应用程序的虚拟地址空间(如果有的话)?换句话说,虚拟大小比任何其他大小都大得多,是不同的碎片内存?
如果有人能帮我理解这一点,我会非常感激.提前致谢!
在一个简单的场景中,一段时间未使用的页面将从进程中删除,清除并放在空闲列表中,以便任何其他进程可以在需要更多内存时使用它.
使用备用列表,页面将从进程中删除,而不是修改,并放在备用列表中.如果同一个进程碰巧需要该页面,则立即返回.如果另一个进程需要更多内存,则清除该页面并将其提供给该进程.
所以,简而言之,内存管理器保持初始化内存,以防万一最初使用它的进程应该想要它回来 - 但如果其他人想要更多内存,他们将获得它.
| 归档时间: |
|
| 查看次数: |
6077 次 |
| 最近记录: |