65.9K
CodeProject 正在变化。 阅读更多。
Home

内存跟踪工具

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.16/5 (19投票s)

2004 年 11 月 16 日

2分钟阅读

viewsIcon

39504

downloadIcon

996

跟踪内存资源。

引言

本文重点介绍实时跟踪系统内存参数。系统内存参数将取决于内核的内存管理策略。这包括分页的类型、重定位的类型以及上述过程背后的算法。

关于内存管理

本主题是关于系统内存管理背后的机制和要求。通常,考虑到运行各个进程所需的实际内存量,系统中可用的物理内存非常少。这种情况在像 Windows 这样的多任务操作系统中变得至关重要。因此,应该以优化的方式管理可用的物理内存,以充分利用系统的吞吐量。因此,实际物理内存通过虚拟内存的概念扩展到特定限制。此概念通过将 RAM 内存的部分内容换入和换出系统硬盘来实现。被交换的部分称为页面,我们将在下一节中讨论。由于交换涉及 CPU 时间,因此应优化内存以减少交换的机会。但是,无论如何,它也无法避免。

分页

要带入 RAM 的进程不会作为一个整体带入。相反,它被分解成称为页面的片段,以便有效地管理内存并易于交换。当它被分解成片段时,整个进程不必频繁地从磁盘换入/换出。因此,进程的每个页面将占用相应划分的内存帧。有关上述过程的更多信息,您可能需要访问 http://www.linux.com/

关于代码

以上所有信息都以图形方式显示在随附的应用程序中。该应用程序将向您显示您的系统有多少物理内存以及相应的负载。代码运行如下:[我只包括与本文相关的代码。其余与 AppWizard 生成的相同]

#define MEMTRACKTIMER 10 // 声明一个用于持续内存跟踪的计时器

winbase.h 中定义的函数 GlobalMemoryStatus(LPMEMORYSTATUS memStat); 将收集有关内存的所有信息,并将其填入 MEMORYSTATUS 结构。该结构运行如下

typedef struct _MEMORYSTATUS {

DWORD dwLength; // 结构的尺寸 [可选]

DWORD dwMemoryLoad; /* Windows NT 4.0 及更早版本:正在使用的物理内存的最后大约 1000 页的百分比。Windows 2000 及更高版本:正在使用的总物理内存的近似百分比。 */

SIZE_T dwTotalPhys; // 总物理内存

SIZE_T dwAvailPhys; // 总可用物理内存

SIZE_T dwTotalPageFile; // 提交到内存的总页数

SIZE_T dwAvailPageFile; // 可作为页面提交的总可用内存

SIZE_T dwTotalVirtual; // 总虚拟内存

SIZE_T dwAvailVirtual; // 总可用虚拟内存

}MEMORYSTATUS, *LPMEMORYSTATUS;

当以上结构的对象传入函数时,将相应地填充该结构。就这样...

© . All rights reserved.