4

jconsole と同等の .Net アプリ プロファイリング機能を提供する、リンクできる DLL を探しています。具体的には、次のようなものを想像しています。

  1. プロジェクトに DLL を追加します。
  2. あなたはいくつかのinitメソッドを呼び出します
  3. これにより、一連のエンドポイント (Web、TCP、名前付きパイプなど) が公開されます。
  4. これはアプリケーションのパフォーマンスを妨げないため、本番環境で実行できます。
  5. 問題が発生した場合は、エンドポイントに接続してプロファイルします。GC ルート、メモリを占有しているもの (保持セット)、GC のトリガーなどを確認できます。

このようなものはありますか?

4

2 に答える 2

2

OP: 本当にありません。

Simon: Jconsole は、Java と .net の本当の違いを説明する副次的な議論です。Java は、.net が難読化する情報をユーザーに簡単に提示します。おそらく、それぞれのイデオロギーと目標が異なるため、Java は、.net が主に Windows を念頭に置いて設計されている任意のホスト OS で動作する共通の仮想環境になるように設計されています。

.Net プロセスは、あいまいな真空で実行するようには設計されていません。これらはコンポーネント サービスまたは iis の一部として実行され、Windows 上で実行されます。そのため、仮想環境ではリモート モニタリングを提供する準備ができていません。

Java はそのようには機能しません。なぜなら、Java は基礎となる OS やそれが提供する情報についての仮定を立てることができず、Java が行うことはすべてすべてのシステムに対して等しく行われなければならないからです。そのため、Java はそのメモリとスレッド アクティビティに関する膨大な量のデータをユーザーに提供し、ユーザー コード (mbeans) 内の管理対象オブジェクトを処理および検出するためのインフラストラクチャを提供します。Jconsole と jvisualvm を使用すると、ユーザーは Java プロセスにリモート接続できます (ローカルまたは jmx を使用したネットワーク経由のいずれか。ただし、jmx はターゲットの Java プロセスでフラグをアクティブにする必要があります)。その後、ユーザーはこのすべてのデータを表示し、利用可能なすべてのデータを参照できます。 mbeans。その上、これはすべてコア機能であり、プログラムは無料です。

.Net flat out にはこれがありません。リモート管理をアプリケーション コードに組み込むことは、最初から開発者の責任であり、ユーザーがどの管理オブジェクトが存在するかを発見するのに役立つ便利なビューアーはありません。

さらに、Java コードを簡単にソースに戻し、プロジェクトに再構成し、本番システムに対してリモート ブレークポイントを使用してデバッグできます。.net ではこれだけのことが可能ですが、簡単に実行できるわけではありません。

于 2012-03-20T19:36:43.897 に答える
1

.NET Framework 2.0の CLR プロファイラーを見たことがありますか?

.NET マンであること、またはそうであろうとすること -:) jconsole と正確に比較できるかどうかはわかりませんが、プロファイリングを行うことはできます。「CLR メモリ プロファイラー」または「.NET プロファイラー」でグーグル検索できる他の商用ツールがあります。

于 2010-12-06T21:19:53.077 に答える