問題タブ [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.
android - AndroidプロセスにOutOfMemoryErrorでヒープダンプを生成させる方法はありますか?
Sun JVMは-XX:+HeapDumpOnOutOfMemoryError
、Javaプロセスがヒープを使い果たしたときにヒープをダンプするオプションをサポートしています。
OutOfMemoryExceptionでAndroidアプリのダンプヒープを作成するAndroidの同様のオプションはありますか?DDMSを手動で使用する場合、適切なタイミングをとることが難しい場合があります。
java - OOMの原因となるスレッドのスタックトレース
ヒープスペース用にOutOfMemoryErrorを取得しているJavaアプリケーションがあります。-XX:HeapDumpOnOutOfMemoryErrorを有効にして、結果のhprofファイルを作成しました。
ただし、ダンプは、ヒープ、permgenなどに十分なスペースが残っていることを示しています。これは、大量のメモリ(1 GBアレイなど)に対する単一の要求の原因である可能性があり、失敗して失敗する可能性があります。 tはダンプに表示されます。
基本的には、OOMがスローされた時点でOOMを引き起こしたスレッドのスタックを確認したいと思います。
それはhprofダンプから可能ですか?
scala - sbt 0.10 から hprof で実行するタスクを定義する方法
フォークされた JVM で hprof を使用して実行する "run" および "test:run" タスクを定義するにはどうすればよいですか。
build.sbt で
この設定により、両方の実行タスクが hprof で機能します。
デフォルトの "run" および "test:run" タスクを維持するために hprof タスクを定義し、sbt プロンプトから使用したいと考えています。
このようなタスクを定義するにはどうすればよいですか?
clojure - これらの Clojure Hprof トレースを理解するのを手伝ってください
数値データをシミュレートしてから処理する Clojure コードがいくつかあります。データは基本的に double 値のベクトルです。処理には、主にさまざまな方法で値を合計することが含まれます。以下にいくつかのコードを含めますが、私の質問は (私が思うに) より一般的なものです。hprof の結果を解釈する方法がわかりません。
とにかく、私のテストコードは次のとおりです。
どこspin-voxels
よりも高価であるべきですspin-signals
(特に複数回繰り返される場合)。低レベルのルーチンを提供することはできますが、この質問は、トレースの基本を理解していないことに関するものだと思います (以下)。
これを lein でコンパイルして、簡単なプロファイリングを行うと、次のようになります。
プロファイル トレースは次のようになります。
これはかなりクールです。ここまで、幸せです。数値の一般的な処理で時間を無駄にしていることがわかります。
だから私は自分のコードを見て、最初のステップとして、次のものに置き換えることにvec
しましたd-vec
:
これで十分かどうかはわかりませんが、さまざまな場所にいくつかの型注釈を追加する必要もあると思いますが、良いスタートのようです。だから私は再びコンパイルしてプロファイリングします:
Ewww。そのため、大幅に遅くなります。そしてプロフィール?
これは私が理解できない部分であるため、ここにさらに行を含めました。
何でこんなに頻繁にVec.count
登場するの?ベクターの大きさを返すメソッドです。属性の単一行ルックアップ。
私はまだ Double と double の間を行ったり来たりしているため、速度が遅いと思います。さらに型注釈を追加すると、状況が再び改善される可能性があります。しかし、私は今自分が何を持っているかを理解していないので、前に大失敗することがあまり意味があるかどうかはわかりません.
上記のダンプを一般的な用語で説明できる人はいますか? 私は繰り返し呼び出しをしないことを約束しますcount
- 代わりに、たくさんの map と reduce といくつかの明示的なループがあります。
おそらくJITに混乱しているのではないかと思いましたか?関数がインライン化されているため、情報の山が不足している可能性がありますか? ああ、私は 1.3.0-beta1 を使用しています。これは、より賢明な数値処理が行われているように見えるためです。
[更新] http://www.acooke.org/cute/Optimising1.htmlで自分の経験をまとめました- これを理解していないにもかかわらず、5 倍のスピードアップが得られました (実際には、さらにクリーニングして 1.3 に移行すると 10 倍になりました)。
android - 私にエラーを与えるAndroidhprov-dump:1.0.3を期待しています
eclipsesDDMSでDumpHPROFFileオプションを使用し、hprofファイルをin.hprofと呼びましたがhprov-conf in.hprof out.hprof
、コマンドラインから実行しようとすると、「エラー:1.0.3が必要です」というエラーが表示されます。何か案は?
scala - hprof を使用したループの scala のプロファイリング
巷では、scala の for ループは while ループよりも遅いということです。
遅い:
速い:
hprof を使用して for ループがコードのボトルネックかどうかを判断するにはどうすればよいですか? を使用してコードをプロファイリングしています-agentlib:hprof=cpu=samples
が、「CPU サンプル」セクションのメソッドは何ですか?
最適化の取り組みをどこに集中すべきか知りたいです。for ループがボトルネックですか?
java - Java HPROF プロファイラーをオンザフライでプログラム的に開始する
特定のランタイム条件が満たされたときに、Java アプリケーションを選択的に監視/プロファイルしようとしています。HotSpotDiagnosticMXBeanを使用して、オンザフライでヒープをダンプできます。これは非常に便利です。
私は現在、特定のコード パスをより効果的に対象とすることを期待して、CPU プロファイリングで同様のことをしようとしています。コマンドラインHPROF インターフェースと NetBeans プロファイラーの経験はありますが、どちらも事前に開始する必要があります。
実行中のアプリケーション内からプログラムで HPROF プロファイラーをアクティブにする方法はありますか? できれば、プロファイリングプロセスを自由に開始および停止できるようにするものはありますか?
java - hprofプロファイラーの出力には、`lineno`の値に関係なく行番号は含まれません
私は走っています
出力には、行番号のないスタックフレームが表示されます
に変更lineno=y
しlineno=n
ても、まだ取得しUnknown line
ます。
クラスをでコンパイルしました-g
。私javac
のように見えます
.class
ファイルをチェックして、行番号が設定されていることを確認しました。
のようなものをたくさん示しています
行番号の出力を妨げるフラグの組み合わせを使用していますか?
android - Android: ddms の「hprof ダンプ」を押しても、Memory Analyzer Eclipse プラグイン (1.1) が自動的に起動しない
以前のバージョン 1.0 は正常に動作していました。ただし、1.1 にアップデートすると、hprof ファイルを保存するオプションが表示されます。そのファイルをEclipseで開くにはどうすればよいですか?
Eclipse のバージョンは Helios 3.6.2 です。
java - ヒープ ダンプ ファイルを解析しています
明らかにオブジェクトが多すぎるアプリケーションを使用しています。次のメッセージが表示されます。
java.lang.OutOfMemoryError: Java ヒープ スペース ヒープを java_pid2468.hprof にダンプしています ... ヒープ ダンプ ファイルが作成されました [18.711 秒で 1087703293 バイト] スレッド「メイン」で例外 java.lang.OutOfMemoryError: Java ヒープ スペース
しかし、MAT にプラグインをインストールしたので、構築したオブジェクトの数と、どのオブジェクトが最も多くのメモリを占有しているかを確認したいと考えました。ただし、hprof ファイルを解析しようとすると、次のエラー メッセージが表示されます。
内部エラーが発生しました:「'C:\Users\sekulicd\workspace\Csv_validation_MyIsam\java_pid2468.hprof' からのヒープ ダンプの解析中」。Java ヒープ領域
hprof ファイルのサイズは 1,087,703,293 バイトです。次の質問に対する回答が必要です。
- hprof ファイルのサイズが原因で解析に失敗しましたか?
- エラー「 java.lang.OutOfMemoryError: Java heap space 」が発生しないプロジェクトに対してのみ hprof ファイルを解析できますか?
- このファイル (1,087,703,293 バイト) を解析する方法はありますか?