首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FastMM4,Delphi6,TApplication的泄漏?

FastMM4,Delphi6,TApplication的泄漏?
EN

Stack Overflow用户
提问于 2011-02-11 09:31:13
回答 2查看 1.9K关注 0票数 4

我检查了FastMM4和D6。当我使用"Forms“调试一个简单的应用程序时,每次都有3行内存泄漏。

这个应用程序泄漏了内存。小块泄漏(不包括指针注册的预期泄漏): 13 - 20字节: TObjectList x 3,未知x 3 29 - 36字节: TWinHelpViewer x 1 37 - 52字节: THelpManager x 1

这是正常的吗?

这是哪件事造成的?

谢谢: dd

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-11 09:42:28

随Delphi 6附带的RTL/VCL包含一些内存泄漏。在Delphi的以后版本中,FastMM的使用导致从RTL/VCL中删除这些内存泄漏。

您需要做的是向FastMM注册这些已知的和预期的内存泄漏。一旦您注册了泄密,FastMM就不会报告它们。尽管这些泄漏是真实存在的,但由于各种原因,最好忽略它们:

  • 从这些已知的VCL泄漏中泄漏的内存很小,在整个过程中不会增长。
  • 无论如何,只要进程终止,内存就会返回到系统。
  • 由于泄漏是在您无法控制的代码中进行的,所以您可以做的事情不多。您可以修复它们并使用您自己版本的VCL单元,但值得吗?

这些漏洞唯一重要的情况是,如果您有一个DLL,该DLL在该进程的生命周期内从同一进程加载和卸载了数千次。我不相信这是一个非常现实的情况。

如果您不注册泄漏,那么FastMM泄漏报告很大程度上无效,因为它每次都会显示出来。如果每次你学会忽略它的时候都会显示出来。这种泄漏报告非常有价值,但只有当它显示您可以控制的泄漏时,它才是有价值的。

在我的Delphi6项目中,我的.dpr文件中有以下代码:

代码语言:javascript
复制
// Register expected VCL memory leaks caused by Delphi unit HelpIntfs.
FastMM4.RegisterExpectedMemoryLeak(36, 2); // THelpManager x 1, THTMLHelpViewer x 1
FastMM4.RegisterExpectedMemoryLeak(20, 7); // TObjectList x 3, THelpSelector x 1, Unknown x 3
FastMM4.RegisterExpectedMemoryLeak(52);    // TWinHelpViewer x 1

我的应用程序中的所有表单都是从TForm后代中派生出来的:

代码语言:javascript
复制
var
  ExpectedHelpStringMemoryLeakRegistered: Boolean;

procedure TMyForm.WMHelp(var Message: TWMHelp);
begin
  if not (biHelp in BorderIcons) and not ExpectedHelpStringMemoryLeakRegistered then begin
    // Register expected VCL memory leaks caused by Delphi unit HelpIntfs.
    FastMM4.RegisterExpectedMemoryLeak(44); // TString x 1
    ExpectedHelpStringMemoryLeakRegistered := True;
  end;
  inherited;
end;

具体取决于您在RTL/VCL中使用的单元以及如何使用它们,您可能需要注册不同的内存泄漏。

票数 12
EN

Stack Overflow用户

发布于 2011-02-11 09:46:58

我想这是正常的,除非你修补了资料来源。IIRC的作者保存了一张导致内存泄漏的错误列表。“forms es.PAS”,f.i.中的漏洞影响了每个VCL表单的应用。虽然这个产品已经不存在了,但是你可以在'Automated‘site上找到这个列表。这是D6列表

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4967432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档