問題タブ [hprof]
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 - OutOfMemoryError - hprof の作成後に JVM を強制終了する方法
をキャッチするときにJavaを終了させたいのですがOutOfMemoryError
、を使用してファイル-XX:+HeapDumpOnOutOfMemoryError
をダンプしていhprof
ます。ファイルのダンプ中に JVM を起動する必要があるため
使用できません。ファイルの作成
後に JVM を停止する方法はありますか?
明確にするために、私は Sun の JVM バージョン 6 を使用しています。kill -9 <pid>
hprof
hprof
java - heapdump サイズと hprof サイズ
最近、jboss サーバーが xms 4096m、xmx 4096m、permsize 512m で実行されていたときに、hprof 形式でヒープダンプを作成しました。
生成された hprof ファイルは 5 GB を超えています。visualvm、mat アナライザー、または yourkit でヒープダンプをロードすると、合計バイト数が約 1 GB しか表示されません。キットの到達可能範囲を変更しようとしましたが、1 GB を超えて表示されません。
ファイルサイズと表示されたヒープダンプサイズのこの大きな違いが何を引き起こす可能性があるか考えていますか?
ps: jdk1.6.0_23 を使用しています
残念ながら、ここでスクリーンショットを送信することは許可されていません。
ファイルシステムでは、hprof のサイズは 5.227.659 kb であり、キットには次のように記載されています。
オブジェクト: 9.738.282 / 浅いサイズ 740 mb / 保持サイズ: 740 mb それらの間で到達可能な文字列: 6.652.515 (68%) / 浅いサイズ: 381 mb (51%) / 保持サイズ: 381 MB (51%)
保持される最大サイズは、206.810.176 の byte[] です。
java - hprofダンプからのスレッド/ヒープダンプ内のスレッドを表示することは可能ですか?
発生時にアプリケーションによって作成された大きな(5GB)hprofダンプがありOutOfMemoryError
ます。( XXの使用:HeapDumpOnOutOfMemoryError)。
残念ながら、このエラーが発生したときに収集されたログはありません。これを再作成するには数時間かかります。いくつかのツールがhprofからの例外スタックトレースまたはすべてのスレッドスタックなどを表示できるかどうかを期待していました。
現在MATを使用していますが、スレッド情報を取得する方法がわかりませんでした。どのツールを使用できますか?
(OOMが発生したときのhprofファイルにスレッド/呼び出しの場所に関する情報があるかどうかはわかりません)。
(通常の場合にスレッドダンプを取得する方法を知っています。ここでの問題は、すでに発生したイベントです。私が持っているのはhprofダンプだけです。)
android - MAT (Eclipse メモリ アナライザー) - メモリ ダンプからビットマップを表示する方法
Eclipse Memory Analyzer (MAT とも呼ばれます)を使用して、Android アプリのメモリ使用量を分析しています。android.graphics.Bitmap
ヒープの大部分を使用して、クラスの奇妙なインスタンスを見つけることがあります。問題は、このビットマップのソースが見つからないことです。 filenameもresourceIDも何もありません。ビットマップについて見つけることができるすべての情報は次のとおりです。
画像ピクセルの配列を持つフィールドがあるmBuffer
と思います。しかし、それは PNG ではなく、内部の Android 形式です。
質問: このビットマップで表されるイメージをメモリ ダンプから表示するにはどうすればよいですか?
java - jar 内のクラスをプロファイリングする方法は?
mvn assembly:assembly
プロファイリングしようとしている(でコンパイルされた) JAR 内にクラスがある場合、jhat または Eclipse メモリ アナライザーで使用できる有効なコア ダンプを取得するコマンドは何ですか?
これを実行してみました:
java -agentlib:hprof=heap=sites,cpu=samples,file=profile.hprof,format=b -jar the-jar.jar
プロセスを停止すると、コア ダンプが作成されます。
しかし、jhat も Eclipse メモリ アナライザーも、これを有効なダンプとして認識しません。
jhatは私にこの警告を与えます:
また、hprof のドキュメントを読むと、クラス名を渡す必要があることがわかります。JAR内にある場合、どうすればよいですか?
java - コアダンプを hprof に変換できません
hprof に変換したい core.31690 ファイルがあります。私は試しました:jmap -dump:format=b,file=mydump.hprof /usr/bin/java core.31690
しかし、私は以下を得ました:
オンラインで探してみましたが、何も見つかりませんでした。ポインタはありますか?
java - YourKit で Hadoop HPROF .profile ファイルを開く
YourKit はバイナリ HPROF ダンプを開くことができると主張していますが、Hadoop ジョブから作成されたバイナリ ダンプは有効なスナップショットではないと主張しています。
ダンプは、 (Hadoop: The Definitive Guide で指定されているように)mapred.task.profile.params
の値でオプションを指定することによって作成されます。-agentlib:hprof=cpu=samples,heap=sites,depth=6,force=n,thread=y,verbose=n,file=%s,format=b
このファイルを YourKit で開く方法はありますか? 作成されたファイルを開くグラフィカルなプロファイリング ツールは他にありますか?
java - JVMTIを使用してCPU使用率を計算するには
JavaアプリケーションのCPU使用率を探しています。CPU使用率を取得する最良の方法は、(process_time / elapsed_time)*100.0です。Javaアプリケーションの場合、process_timeはcom.sun.management.OperatingSystemMXBeanによって取得されます。JVMTIを使用してCPU使用率を計算する方法はありますか?
java - Mavenビルドのメモリリークを見つけようとするとHPROFが文句を言う
私は、Java プロセスが PermGen メモリ (EDIT) を使い果たすことがあるリークがあるように見える Maven ビルドを持っています。VisualVM から、新しいビルドが行われるたびにヒープと PermGen が著しく増加することを学びました。ここで、リークがどこにあるかを調べたいと思います(編集:時折の例外を取り除くだけではありません)。
これに対する標準的なアプローチは、HPROF に事後分析用のデータを収集させることです。ただし、これは失敗し、生成された java.hprof ファイルはツールで正しく解析できません。
私の「mvn.bat」ファイルは次のようになります (Windows 7 の 64 ビット JVM):
私の MAVEN_OPTS は次のようになります
これは「mvn clean」の結果です。
(そして何度も)。私はhprofに慣れていません。
ここから先に進む最善の方法は何ですか?
android - ListActivityのパフォーマンスの問題
に深刻な問題がありますListActivity
。アプリを開いてスクロールを開始すると、アプリが数秒間フリーズし、その後スムーズにスクロールできます。「アプリケーションが応答していません」というエラーは表示されません。ヒープダンプを作成*.hprof
してMATに入れました。ここで私のリークを見ることができます:
何かが怪しいようです。たぶん私はカーソルを正しい方法で使用していません。ここで私のコードを見ることができます:
編集1:
次のコードで同じリークがあるため、この問題はデータベースから発生していません。
誰かがメモリリークを見つけることができれば素晴らしいでしょう。
マイクさん、こんにちは!