监视变体和对象的内存消耗的工具或功能

|| 我想知道是否存在任何工具(例如探查器)或Windows函数来监视特定COM对象使用了多少内存。 例如:
var
  WordApplication, WordDocument: Variant;
begin
   WordApplication := CreateOleObject(\'Word.Application\');
   WordDocument := WordApplication.Documents.Add;
   //here I would like to know how much memory is used by
   //the WordApplication and WordDocument variables.      
end;
    
已邀请:
通常,没有这样的工具。对于这样一个存在的工具,它需要了解任何通用COM对象的内部,我想问的太多了。 在此示例中,
WordDocument
WordApplication
的一部分,因此应用程序的内存使用更为相关。您可以做的是算出承载
WordApplication
的Word实例正在消耗多少内存。 Process Explorer会告诉您。     
存在内存分析器,但是检查应用程序的内部结构可能会很困难,因为通常需要调试符号和/或工具才能让工具知道何时以及为哪些对象分配了内存(AFAIK MS提供了“已检查的版本” (Windows,而不是Office)。的确,COM类型库和拦截标准API可能会有所帮助-尝试下载AQTime这样的工具的试用版,看看它是否可以帮助您-我从未尝试过以这种方式使用它。     
您可能会得到的最接近的结果是,在非常安静的虚拟机上运行时,仔细消除其他干扰源,并在Windows中使用性能监视器。 随时间推移监视和记录Word和您的进程的内存使用情况。观看测试运行,并在性能监视器中查看记录的信息。您可能会做出一些无法证明的假设(这样一个不可验证的断言示例:刚才做的对ComObject.Document.DoSomething的调用导致WORD内存使用量增加150K是100%)。     

要回复问题请先登录注册