虚拟与物理内存泄漏

时间:2010-12-14 21:55:59

标签: windbg sos

我只是很难从调试.net应用程序的角度理解虚拟内存与物理内存泄漏之间的区别。

任何人都可以用例子详细说明这个概念我们怎么能只有一种泄漏而不是其他泄漏。

TIA

1 个答案:

答案 0 :(得分:1)

虚拟内存包含已标记为可供其使用的进程的地址空间范围。当你泄漏内存时,几乎总是涉及虚拟内存,因为这是大多数程序处理的唯一概念。

物理内存通常仅在程序访问虚拟内存时使用,操作系统必须提供物理内存才能匹配。这很少与虚拟内存无关,因为它受操作系统的控制。

OTOH,一个程序可以通过强制某些虚拟内存页面保持映射到物理内存来实现对物理内存分配的更多控制(这种机制在不同操作系统之间有所不同)。在这种情况下,有缺陷的程序可能会泄漏物理内存。

更软的形式的物理内存泄漏是指程序不断触及逻辑上不需要访问的虚拟内存页面。这将使这些页面变得热门,并阻碍操作系统将工作集(物理映射页面集)保持较小的努力。