3

現在、Unity を使用した大規模なアプリケーションのセットアップでパフォーマンスの問題を調査しています。あまりにも多くのオブジェクトを割り当てているのではないかと疑っています。Unity はオブジェクトの作成/割り当てを処理するため、Unity によってオブジェクトが解決または作成されたときにログに記録できるイベントまたは何かがありますか? 何が起こっているのかをよりよく理解できるように、完全なトレースが必要です。

ありがとう!

4

4 に答える 4

3

私はカスタムには行きませんLifetimeManager。Unityがいつ新しいオブジェクトを作成するかを知りたい場合は、Unityのビルドパイプラインから直接その情報を取得する必要があります。

コードプレックスのTecXプロジェクトには、コンテナーによるオブジェクトの作成の前後にイベントを発生させる拡張機能があります。TecX.Unityプロジェクト(フォルダー通知)のソースをご覧ください。TecX.Unity.Testsのテストは、その使用方法を示しています。

于 2012-05-15T06:20:30.067 に答える
2

カスタム ライフ タイム マネージャーの方法で検索してみてください。デフォルトのライフタイムマネージャーをラップして、オブジェクトのインスタンス化の時間を記録できます。このリンクが役立つかもしれません: http://tavaresstudios.com/Blog/post/Writing-Custom-Lifetime-Managers.aspx

于 2012-05-14T21:17:34.953 に答える
2

を介して依存関係の解決を追跡できますUnityContainerExtensionTypeMapping段階で単一のビルダー戦略を追加するものを構築します。

    protected override void Initialize()
    {
        Context.Strategies.Add(_builderStrategy, UnityBuildStage.TypeMapping);
    }

PreBuildUpのメソッド内でBuilderStrategy何が解決されようとしているのPostBuildUpかを確認でき、メソッド内で何が解決されたかを確認できます。

于 2012-05-15T07:36:19.410 に答える
0

手っ取り早い解決策は、複数回作成されていると思われるオブジェクトのデフォルト コンストラクターにロギング コードを追加し、スタック トレースをダンプすることです。このコードにブレーク ポイントを設定し、デバッグ中にスタックを検査することもできます。

于 2012-05-14T21:31:35.600 に答える