問題タブ [yourkit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JProfiler と YourKit のどちらの Java プロファイラーが優れていますか?
汎用プロファイリングとヒープ分析には、どのプロファイラーが適していますか? 私たちのアプリの 90% は、実質的なデータベースと数値処理を備えたスタンドアロンのコマンド ライン プログラムです。残りの 10% は Web アプリケーション/サーブレット コンテナ アプリケーションです (JSP はほとんどなく、スクリプトはありません!)。ターゲット ユーザーは、5 ~ 10 年の業界経験を持つシニア ソフトウェア エンジニアです。Sun JDK 5 および.
この質問を書いている時点 (2008-10-02) では、JProfiler は 5.1.4 で、YourKit は 7.5 でした。YourKit 8.0 が間もなくリリースされるようです。
java - Javaでのネイティブメソッドのプロファイリング-奇妙な結果
Yourkit 8.0を使用して、Mac OS X(10.5.7、Apple JDK 1.6.0_06-b06-57)で実行されている数学的に集中的なアプリケーションのプロファイリングを行っていますが、CPUプロファイリングの結果に奇妙な動作が見られます。
たとえば、サンプリングを使用してプロファイリングを実行したところ、アプリケーションの10分間の実行時間の40%がStrictMath.atanメソッドに費やされたことが報告されました。私はこれが不可解であることに気づきましたが、私はそれを一言で理解し、atanを非常に単純な多項式フィットに置き換えるのに少し時間を費やしました。
アプリケーションを再度実行すると、以前とほぼ同じ時間(10分)かかりましたが、アタンの交換はプロファイリング結果のどこにも表示されませんでした。代わりに、他の主要なホットスポットの実行時の割合は、それを補うために単純に増加しました。
要約する:
StrictMath.atanの結果(ネイティブメソッド)
合計実行時間:10分
メソッド1:20%
メソッド2:20%
メソッド3:20%
StrictMath.atan:40%
単純化された純粋なJavaatanの結果
合計実行時間:10分
方法1:33%
方法2:33%
方法3:33%
(メソッド1、2、3はatan呼び出しを実行しません)
この振る舞いはどうなっているのでしょうか?EJ-TechnologiesのJProfilerを使用しても同じ結果が得られました。JDKプロファイリングAPIは、少なくともOS Xでは、ネイティブメソッドの不正確な結果を報告しているようです。
memory - Tomcat ThreadWithAttributes が原因でメモリ リークが発生する
次の環境でメモリ不足の問題があります。
XFire WebServices Framework JDK 1.5 を使用する Tomcat 5.1.23
YourKit を使用してプロファイリングしたところ、クラス org.apache.tomcat.util.threads.ThreadWithAttributes の複数のインスタンスに、重複した文字列を含む java.lang.Object 配列を持つ巨大な ArrayList オブジェクト (Stack Local) があることがわかりました。
以下はスクリーンショットです。
ThreadWithAttributes がそのような ArrayList オブジェクトへの参照を保持し、それらの文字列が tomcat にデプロイされたソフトウェアに入力されているように見える理由は何ですか?
Tomcat の既知のメモリ リークの問題を解決する必要はありますか?
java - YourKit Java Profilerを使用してJavaコマンドラインツールに接続するにはどうすればよいですか?
Javaでコマンドラインツールを作成しました。これをYourKitでプロファイリングしたいと思います。次のようなコマンドラインツールを起動します。
2秒以内に完了します。
http://www.yourkit.com/docs/80/help/agent.jspを読んだ後、次のことを試しました。
...そして私は得る:
(その後、ツールは最後まで実行されて終了します。)
(少なくともデフォルトでは)YourKitは実行中のアプリケーションにのみ接続するように設計されていると思います。
YourKitからの接続を許可するようにコマンドラインツールを変更するにはどうすればよいですか?
- 入力を一時停止するコマンドラインオプションを追加できます。YourKitから接続するまで、Returnキーを押して続行することはありません。
- YourKitに接続するまでツールをブロックするYourKitAPIをツールに追加できますか?
- YourKitを使用して後で(コマンドラインツールの完了後に)ロードして分析できるプロファイリング「スナップショット」を作成するYourKit APIまたはJavaコマンドラインオプションはありますか?
java - JNI 呼び出しによって実行される Java のプロファイリング
実行時に次のC++コードがあります。
JVM をロードし (JVM のロード方法を完全に制御できます)、C JNI コードを使用して (ロードされたクラスから) Java メソッドを呼び出します。Java コードには Main() がなく、実際には標準の Java アプリケーションではありません。これは主に、Jar ファイルにコンパイルおよび圧縮された静的コードであり、コードは C++ モジュールによって呼び出されます。
YourKit によって実行されているこの Java コードをプロファイリングすることは可能ですか (ライセンスを持っています)? もしそうなら、その方法を教えていただければ幸いです。
java - YourKitはReentrantLocksを報告しますか?
アプリケーションの特定のコードパスでのロックの競合を減らしようとしています。ロックの競合が多いコードを特定するには、YourKitをアプリケーションに接続し、[監視]タブを使用して、ブロックしたいスレッドの原因となったロックを取得します。私の最終的な目的は、YKGUIの[スレッド]タブにこのスレッドの赤い点がないようにすることです。
ReentrantLock
多くの場合、競合は組み込みロックを使用した読み取り/読み取りロックから発生するため、組み込みロックの代わりに使用することで競合を改善できます。実際、私がこれを試したとき、YourKitはより低い競合を報告しました。その情報は信頼できますか?YourKitはReentrantLockの使用状況を正しく報告していますか?
私は、Sun1.6u1832ビットJVMを搭載したSolaris10でYourKit8.0.24を使用しています。
java - ubuntuで実行されているJavaアプリケーションのI/O時間を測定するには?
アプリケーションが I/O を待機している時間を収集したいと考えています。この Java アプリケーションを ubuntu/linux で実行しています。yourkit プロファイラーを使用しています。I/O 時間を測定するための他のプロファイリング ツールがあるかどうかを提案します。
java - 本番環境の YourKit
最近、YourKit の試用版をダウンロードしました。しばらく使ってみたところ、見栄えは良いのですが、本番環境で実行することに不安があります。私が使用した以前のプロファイラーは、サーバーに許容できないオーバーヘッドを加えていました。
YourKit ソフトウェアの一般的なオーバーヘッドを知っている人はいますか? または、実稼働環境で YourKit を実行する際に問題が発生した人はいますか?
YourKit for Java を実行しています。私がプロファイリングしているサーバーは、JBoss 4 を実行している RedHat です。
java - CPU消費のためのJavaプロファイリングツール
私は、どのコードがCPUを消費しているかを調べるために、JProfiler、JProbe、AppSight、YourKitを使用しました。しかし、YourKitは他のキットよりも見栄えがします。
もっと良いものはありますか ?
java - Java Profiler に記載されているアプリケーション内のオブジェクトを見つけるのが難しい
Weblogic でホストされている Web アプリケーションに YourKit Java プロファイラーを使用しています。現在メモリリークについて調査中です。プロファイラーは、25% のメモリを占有している数 25 万の char[] オブジェクトを示しています。
これらの char[] オブジェクトが作成される場所について、アプリケーションを調べてみました。驚いたことに、何も見つかりませんでした。ここで何か間違ったことをしていますか?Weblogic は内部でこれらの Array オブジェクトを作成していますか?
これらのオブジェクトを作成しているコードの正確な部分をアプリケーション内で見つけるにはどうすればよいですか? ありがとう。
よろしく、シッダールス