FASTMM4またはデフォルトのメモリマネージャを使用して、すべてのアプリケーションでインスタンス化されたすべてのオブジェクトを一覧表示するにはどうすればよいですか?インスタンス化されたすべてのオブジェクトをリストする方法はありますか?
答えて
おそらくFastMM4でこれを行うことができますが、それは複雑になります。 ScanForMemoryLeaksプロシージャのコードを調べて、その処理方法を確認してください。
このルーチンは、予想されるメモリリークのリストに対して割り当てられたヒープメモリをすべてチェックし、カウントを含むすべてのものと、オブジェクトが見つかった場合はオブジェクトクラス名を報告します。あなたがしたいことは、割り当てられたヒープメモリをすべてチェックし、見つかったすべてのオブジェクトの数とオブジェクトクラス名を報告することです。だから、これは本当に似た作業です。登録されたポインタリストのチェックを省略して、オブジェクトではないすべてのものを除外してください。
これはサポートされておらず、推奨されていませんが、あなたの状況によっては、作成と破壊を記録するためにTObjectを編集できる場合があります。しかし、VCLを修正することは本当に嫌になります。だから、同じことをするためにHelperオブジェクト(2006年から利用可能です)を使うことができますか?作成された各オブジェクトの詳細を別のリストなどに書き込みます。
いいえ、そのためにヘルパーオブジェクトを使用することはできません。 – gabr
Fine!うまくいくはずですが、VCLのデフォルトの変更が最後の選択だと思いますが、それ以外の解決策がない場合は、私はそれを行います。ありがとう。 –
@ gabr: リストがグローバルであれば、彼はすることができます..ヘルパーではできないことがインスタンスデータを作成しています... –
Tony Allenの提案を実装する興味深い方法は、実行時にオブジェクト作成メソッドと破壊メソッドをフックすることです。そのトリックを行うかもしれないAsmProfilerプロジェクトの一部である興味深い図書館があります(IMHOの非常に良いビット)。ここでは、すべての重量挙げを行うKOLDetoursユニットへのリンクがあります。
FWIWデルファイの4/5日間に、オブジェクトの作成/破棄をオプションで追跡する計測ベースのクラスを含むフレームワークを実装しました。これはオブジェクトの漏れなどを追跡するためにはうまくいきましたが、膨大な量の情報を生成しました。 FASTMM4は、シャットダウン時にオブジェクトが漏洩したことを知る必要がある場合は、はるかに優れたオプションです。
メモリマネージャを変更するには、SetMemoryManagerを呼び出します。 あなたは簡単なスタブになるあなた自身のMMを書くことができます:古いMMへのすべての呼び出しをリダイレクトします(FastMMです。GetMemoryManagerを呼び出して取得できます)。 呼び出しスタックを調べることでオブジェクトの作成/破壊を検出できます。呼び出しはTObjectのNewInstanceメソッドから行う必要があります。
- 1. Groovy内の別のオブジェクトの内部でインスタンス化されたオブジェクトをモックする方法はありますか?
- 2. 条件が満たされたらリスト内のオブジェクトのインスタンスを削除する方法はありますか?
- 3. オブジェクトのインスタンスを、それ自身のクラス内の現在のインスタンス化されたオブジェクトに設定する方法はありますか?
- 4. Linq Group別のリストにグループ化されたオブジェクトのコレクションを返す方法はありますか?
- 5. インスタンス化されたビューコントローラでコントロールを正しく初期化する方法はありますか?
- 6. Mvvmcrossでのバインディングは、オブジェクトがインスタンス化される必要がありますか?
- 7. Javaで匿名のインスタンス化されたオブジェクトを返す方法
- 8. 作成されるオブジェクトの数を調べる方法はありますか?
- 9. プログラムでインスタンス化されたオブジェクトthatsクラスにはSpringのライフサイクルアノテーションがあります
- 10. インスタンス化されたオブジェクトに他のインスタンス化されたオブジェクトを続ける方法
- 11. サイト内のすべてのAMPページを検証する自動化された方法はありますか?
- 12. PHP:作成されたすべてのオブジェクトを印刷する方法はありますか?
- 13. クラスがPythonでインスタンス化されているかどうかを確認する方法はありますか?
- 14. オブジェクト内のキーのすべてのインスタンスを削除するエレガントな方法はありますか?
- 15. カメラにインスタンス化されたオブジェクトを渡す方法
- 16. テンプレートクラスの「すべてのパラメータ化された型」または「すべての引数リスト」の指定方法
- 17. デバッグモードでオブジェクトをシリアル化する方法はありますか?
- 18. COMオブジェクトはあるプログラムからインスタンス化されますが、同じユーザーで実行されている別のインスタンスからインスタンス化されません
- 19. リストオブジェクトの代わりに単一のオブジェクトとしてリストを逆シリアル化する方法はありますか?
- 20. 匿名の内部クラスで定義されたクラスをインスタンス化する方法はありますか?
- 21. UICollectionView APIの外部で「塗装された」UICollectionViewCellサブクラスをインスタンス化する方法はありますか?
- 22. Ruby:クラスのインスタンス化されたメソッドだけを模倣する方法はありますか?
- 23. 量子化されたベクトル(0,0.25,0.5,0.75,1など)にデータフレームの各インスタンスを識別する方法はありますか?
- 24. ウェブページのすべての変更をリストする方法はありますか?
- 25. TypeScriptで各プロパティとその値を指定してオブジェクトをインスタンス化する方法はありますか?
- 26. Javascriptで可変キーと値のペアを使用してオブジェクトをインスタンス化する方法はありますか?
- 27. ネストされたリストのアイテムを照会する方法はありますか?
- 28. すべてのElastic Load Balancerをリストする方法はありますか?
- 29. 同じクラス(Python)内でクラスをインスタンス化したオブジェクトを取得する方法はありますか?
- 30. グループ化されたリストを作成するより効率的な方法はありますか
なぜこの情報が必要ですか?メモリリークをお探しですか?私はそこに別の方法があると思う。 – Alex
@アレキサンダー:いいえ、すべての人! FASTMM4はメモリリークを簡単に示しています。実際には、VCLの特定のクラスがロードされ、インスタンス化されたかどうかを知りたかったのですが、今私はこの質問に合格しました。ありがとう! –