在COM对象中使用FastMM4(Delphi)

问题描述 投票:-1回答:1

我使用过FastMM,它是检测泄漏和内存问题的绝佳工具。但是现在我尝试检查用Delphi制作的COM服务器,并且报告不一致。我试图在ShearMM和其他人的DLL中配置FastMM,但我知道不应该这样(COM服务器必须是与使用它的二进制文件隔离的黑盒子,不是要共享MM) 。那么......我该如何配置呢?我应该在服务器项目中启用什么定义,以便FastMM报告COM服务器上的泄漏?


EDITED

我添加了一个delphi项目作为示例。它包含一个带有泄漏的COM进程内对象和一个消耗它的EXE项目,也有泄漏。执行客户端时,只有FastMM4显示客户端泄漏的报告。未检测到(或未报告)服务器泄漏:

Delphi Sample

好奇心:在服务器中,如果不使用FastMM,我使用Delphi泄漏报告(ReportMemoryLeaksOnShutdown),Delphi发现服务器泄漏!

另一个澄清:我的FastMM4Options.inc没有受到影响,因为它来自FastMM4来源

delphi fastmm
1个回答
0
投票

如果将COM对象配置为在进程外服务器进程中运行,以便创建COM对象启动EXE文件,则可以自由使用FastMM,与您描述的调用进程隔离。

如果COM以这种方式启动EXE文件,默认情况下它将在释放最后一个对象时终止,除非您使用ComServer.OnLastRelease事件覆盖此行为(ComServer在System.Win.ComServ.pas单元中声明)。

© www.soinside.com 2019 - 2024. All rights reserved.