現在、Unity を使用した大規模なアプリケーションのセットアップでパフォーマンスの問題を調査しています。あまりにも多くのオブジェクトを割り当てているのではないかと疑っています。Unity はオブジェクトの作成/割り当てを処理するため、Unity によってオブジェクトが解決または作成されたときにログに記録できるイベントまたは何かがありますか? 何が起こっているのかをよりよく理解できるように、完全なトレースが必要です。
ありがとう!
現在、Unity を使用した大規模なアプリケーションのセットアップでパフォーマンスの問題を調査しています。あまりにも多くのオブジェクトを割り当てているのではないかと疑っています。Unity はオブジェクトの作成/割り当てを処理するため、Unity によってオブジェクトが解決または作成されたときにログに記録できるイベントまたは何かがありますか? 何が起こっているのかをよりよく理解できるように、完全なトレースが必要です。
ありがとう!
私はカスタムには行きませんLifetimeManager
。Unityがいつ新しいオブジェクトを作成するかを知りたい場合は、Unityのビルドパイプラインから直接その情報を取得する必要があります。
コードプレックスのTecXプロジェクトには、コンテナーによるオブジェクトの作成の前後にイベントを発生させる拡張機能があります。TecX.Unityプロジェクト(フォルダー通知)のソースをご覧ください。TecX.Unity.Testsのテストは、その使用方法を示しています。
カスタム ライフ タイム マネージャーの方法で検索してみてください。デフォルトのライフタイムマネージャーをラップして、オブジェクトのインスタンス化の時間を記録できます。このリンクが役立つかもしれません: http://tavaresstudios.com/Blog/post/Writing-Custom-Lifetime-Managers.aspx
を介して依存関係の解決を追跡できますUnityContainerExtension
。TypeMapping
段階で単一のビルダー戦略を追加するものを構築します。
protected override void Initialize()
{
Context.Strategies.Add(_builderStrategy, UnityBuildStage.TypeMapping);
}
PreBuildUp
のメソッド内でBuilderStrategy
何が解決されようとしているのPostBuildUp
かを確認でき、メソッド内で何が解決されたかを確認できます。
手っ取り早い解決策は、複数回作成されていると思われるオブジェクトのデフォルト コンストラクターにロギング コードを追加し、スタック トレースをダンプすることです。このコードにブレーク ポイントを設定し、デバッグ中にスタックを検査することもできます。