小编tor*_*zit的帖子

Windows Server x64 中的进程管理内存泄漏?

全新安装并启动 OS Windows x64 后,我启动了 cmd.exe(任何其他 exe)并关闭了它。然后我启动 rammap.exe ( http://technet.microsoft.com/en-us/sysinternals/ff700229.aspx )。在名为“进程”的第二页上,我按进程名称对列表进行了排序,看到 cmd.exe 仍然消耗内存(4K 私有和 16K 页表 = 20K)。我第二次启动它,新项目出现在这个列表中(每个进程启动+终止一个)。因此,每个进程终止都会占用 20K 的内存。

如果您的软件经常在此类服务器操作系统上启动和终止进程,您会发现几天或几周后操作系统开始显示奇怪的错误(通常是关于内存不足)。几天后,您要做的就是重新启动操作系统。重新启动后,它在几乎相同的时间段内都可以正常工作。

我在每个 2008 服务器 R2 x64(+SP1 和 -SP1)上都注册了这个问题,并在 2003 服务器 x64 上间接(不支持 rammap)。

在 Windows 7 x32(+SP1 和 -SP1)上未观察到该问题。

截屏 在此处输入图片说明

看这个问题探索的第一步页表快速增长

任何人都可以反驳或批准我的假设和观察吗?谁能告诉如何解决这种行为?这是错误还是不是?

windows memory 64-bit memory-leak

5
推荐指数
1
解决办法
1734
查看次数

页表快速增长

不久前我发现了一个非常有趣的工具RamMap。我在几台运行我们 x32 软件的服务器上发现 PAGE TABLE 增长非常快——每天 1.2 GB(总共 10 GB)。此外,NONPAGED POOL 每天增长 300MB。

  1. 任何人都可以解释通常的原因吗?
  2. 如何从代码中获取 PAGE TABLE 的大小(例如 API 函数或 WMI 类)?
  3. 可以减少、清除或......释放RAM吗?

我们有称为1C(俄罗斯商业导向平台)的编程和执行平台。一个进程就像其他进程的管理器,它们按计划启动并由规则终止,并执行不同类型的数据处理,包括使用 COM 与另一个数据库交换。换句话说,我不知道平台级别发生了什么(它对我们隐藏)。我们从平台开发人员那里得到了一些不快 (=)) 的支持——他们仍然没有回答我们关于这个问题的问题。

我们有不同的操作系统配置(2003 和 2008 服务器、x32 和 x64)。页表随处增长。增长速度与同时运行的进程数成正比(在主服务器 30-40 上)。当 PAGE TABLE 达到 RAM 的 50-70% 时,服务器开始以不同的方式出现故障。

windows memory

2
推荐指数
1
解决办法
4285
查看次数

标签 统计

memory ×2

windows ×2

64-bit ×1

memory-leak ×1