从调试.net应用程序的角度来看,我很难理解虚拟内存和物理内存泄漏之间的区别。
有没有人可以举例说明这个概念,为什么我们只有一种类型的泄漏,而不是另一种。
提亚
发布于 2010-12-15 06:08:34
虚拟内存包括已标记为可供其使用的进程地址空间的范围。当您泄漏内存时,几乎总是涉及虚拟内存,因为这是大多数程序处理的唯一概念。
物理内存通常仅在程序访问虚拟内存时才会被消耗,为此操作系统必须提供与之匹配的物理内存。这很少独立于虚拟内存泄漏,因为它是在操作系统的控制之下。
程序可以通过强制某些虚拟内存页面保持映射到物理内存来对物理内存的分配进行更多的控制(这种机制在不同的OSes中有所不同)。在这种情况下,有buggy的程序可能会泄漏物理内存。
物理内存泄漏的一种较软形式是当程序不断接触它在逻辑上不需要访问的虚拟内存页面时。这将使这些页面保持热度,并阻碍操作系统保持工作集(物理映射页面集)较小的努力。
https://stackoverflow.com/questions/4444672
复制相似问题