0

特定の COM オブジェクトによって使用されるメモリの量を監視するためのツール (プロファイラーなど) または Windows 機能が存在するかどうかを知りたいです。

例えば:

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;
4

3 に答える 3

4

一般に、そのようなツールはありません。そのようなツールが存在するためには、一般的な COM オブジェクトの内部について知る必要がありますが、それは多すぎると思います。

この例でWordDocumentは、 は の一部であるWordApplicationため、アプリケーションのメモリ使用量はより適切です。できることは、ホストしている Word のインスタンスWordApplicationが消費しているメモリの量を計算することです。Process Explorer がそれを教えてくれます。

于 2011-04-15T20:28:20.407 に答える
0

メモリプロファイラーは存在しますが、通常、デバッグシンボルやインストルメンテーションを使用して、いつ、どのオブジェクトメモリが割り当てられたかをツールに知らせる必要があるため、制御できないアプリケーションの内部を検査するのは難しい場合があります(AFAIK MSは、 Windowsですが、Officeではありません)。COMタイプライブラリとインターセプト標準APIが役立つことは事実です-AQTimeのようなツールの試用版をダウンロードして、それが役立つかどうかを確認してください-私はそれをそのように使用しようとしたことはありません。

于 2011-04-17T19:07:47.780 に答える
0

他の干渉源を慎重に取り除き、非常に静かな仮想マシンで実行しながら、Windows でパフォーマンス モニターを使用するのが最も近い方法です。

プロセスごと、経時的に、Word およびユーザーのプロセスのメモリ使用量を監視してログに記録します。テストの実行を監視し、記録された情報をパフォーマンス モニターで確認します。おそらく、証明できないいくつかの仮定をしているでしょう (そのような検証不可能な主張の例: WORD メモリ使用量の 150K の増加は、ComObject.Document.DoSomething への呼び出しによって 100% 引き起こされました)。

于 2011-04-18T19:10:45.333 に答える