加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

对于在Windows Server 2008(sp1)上运行的Delphi应用程序,内存是

发布时间:2020-12-13 20:41:01 所属栏目:Windows 来源:网络整理
导读:我们有一个D2007应用程序,在Windows Server 2008(x64,sp1)上运行时,其内存占用量稳步增长. 它在Windows Server 2003(x32或x64),XP等上正常运行…它按预期上下运行. 我们尝试使用随附的内存管理器或最新的FastMM4 4.92,结果相同. 有没有人试图在Win2008上监控
我们有一个D2007应用程序,在Windows Server 2008(x64,sp1)上运行时,其内存占用量稳步增长.
它在Windows Server 2003(x32或x64),XP等上正常运行…它按预期上下运行.
我们尝试使用随附的内存管理器或最新的FastMM4 4.92,结果相同.

有没有人试图在Win2008上监控任何Delphi应用程序的内存使用情况并确认?
或者有任何线索?

精度:
– 常识中没有内存泄漏(是的,我对FastMM等很熟悉)
– 使用Process Explorer监视内存使用情况;在Win2008上,虚拟内存(专用字节)和物理内存(WorkingSet Private)都在增长
– 即使存在内存压力,内存消耗仍在增长. (这就是我们如何调查,因为它导致了失败,但只在Win2008盒子上)

更新:// ** repaced ** //代码比我们的应用程序简单得多,但显示相同的行为.
创建10,000,000个对象的列表,然后10,000个接口,执行2次,使用的内存增加约60MB,在Windows Server 2008上再增加100次,大约增加300MB,但只返回XP上的位置.
如果启动多个实例,则不会释放内存以允许其他实例运行.相反,页面文件增长,服务器爬行…

更新2:见QC report 73347
经过进一步调查后,我们将其追踪到关键部分,如下面的代码所示.
将该代码放入带有Button的简单VCL应用程序中.并使用Process Explorer进行监控:
它从~2.6 MB开始,经过5次运行(点击按钮)后它保持在~118.6MB.
在5次处决中损失了116MB.

//***********************
const
  CS_NUMBER = 10000000;
type
  TCSArray = Array[1..CS_NUMBER] of TRTLCriticalSection;
  PCSArray = ^TCSArray;

procedure TestStatic;
var
  csArray: PCSArray;
  idx: Integer;
begin
  New(csArray);

  for idx := 1 to length(csArray^) do
    InitializeCriticalSection(csArray^[idx]);

  for idx := 1 to length(csArray^) do
      DeleteCriticalSection(csArray^[idx]);

  Dispose(csArray);
end;

procedure TestDynamic(const Number: Integer);
var
  csArray: array of TRTLCriticalSection;
  idx: Integer;
begin
  SetLength(csArray,Number);

  for idx := Low(csArray) to High(csArray) do
    InitializeCriticalSection(csArray[idx]);

  for idx := Low(csArray) to High(csArray) do
      DeleteCriticalSection(csArray[idx]);
end;

procedure TForm4.Button1Click(Sender: TObject);
begin
  ReportMemoryLeaksOnShutdown := True;
  TestStatic;
  TestDynamic(CS_NUMBER);
end;
有一个名为 VMMap的新sysinternals工具可视化分配的内存.也许它可以向你展示大内存块是什么.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读