問題タブ [jhat]
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 - Java1.6.0_24の「jhat」のOQL「unique」関数の問題
これは私の最初の投稿された質問です。パッケージにロードされたクラスの静的フィールドを一覧表示する、かなり複雑なOQLクエリがあります。Java 1.6.0_24の「jhat」に対してクエリを実行する際に見られる問題の1つは、「unique」関数が期待どおりに機能しないことです。私が期待する
['a'、'b'、'c']を返しますが、代わりに['a']、wtfを返しますか?
誰かが興味を持っている場合、実際の完全なクエリは次のとおりです('com.mydomain'を好きなものに置き換えてください):
java - 巨大なヒープダンプ(11GB)-Jhatが失敗し、EclipseMATが助けを必要としていた
EAでメモリエラーが発生し、-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/some/dir
OOM時にヒープをダンプしていました。
12GBのヒープメモリと256MBのpermgenがありました。
ヒープダンプは、アプリケーションを実行しているLinuxボックスで生成され、そのサイズは11.5GBです。ローカルにダウンロードする権限がありません。
JHATを使用してその11GBヒープダンプを分析しようとすると、OOMがスローされました。
LinuxCLIから次のコマンドを試しました。
すべてのオプションで、ダンプを数分間(> 30分)読み取った後にOOM例外がスローされます。
私たちはそれをグーグルで検索し、 MATを強力なヒープダンプアナライザーとして見つけましたが、LINUXでそれを使用する方法ではありませんでした。
どんな提案ももっと助けになるでしょう。ありがとう。
変更:
Linux x86_64マシンにMATをインストールしましたが、実行時に次のエラーが発生しました./MemoryAnalyzer
これを試してみ./ParseHeapDump.sh ../java_pid1491.hprof
たところ、次のエラーが発生しました。
java - Jhat ヒープ組み込みオブジェクトの使用
selectステートメントでheap.heapForEachClassを使用する方法の例を誰かが示すことができますか? クエリのさまざまな例を含むリンクをいくつか提供していただければ幸いです(もちろん、oqlhelpページのもの以外です:))
java - jhatでヒープを分析するためのメモリオーバーヘッドはどれくらいですか?
jhat は Java ヒープ ダンプを分析するための優れたツールですが、大きなヒープの場合、多くの時間を浪費しがちです。jhat のランタイム ヒープが小さすぎると、失敗してメモリ不足になるまでに 15 分かかる場合があります。
私が知りたいのは、ヒープダンプファイルのサイズに基づいて jhat を与える必要がある -Xmx ヒープの量に関する経験則はありますか? 今のところ、バイナリ ヒープ ダンプのみを考慮しています。
いくつかの非常に限られた実験では、ヒープ ダンプのサイズの少なくとも 3 ~ 4 倍であることが示されています。-J-mx12G を使用して、3-and-change ギガバイトのヒープ ファイルを分析できました。
他の誰かがより決定的な実験データを持っていますか、または jhat が実行時にヒープオブジェクトをどのように表すかを理解していますか?
データポイント:
javascript - visualvm(jhat?)oql内でのjavascriptの使用が時々混乱するのはなぜですか?
visualvmOQLに次のステートメントで問題がある理由を知りたいです。
例外は次のとおりです。
対照的に、visualvm OQLには、次のどの例でも問題はありません。
例1(「それ」は引用されていないことに注意してください):
例2(「それ」が引用されていることに注意してください):
例3(「function(it)」は何らかの理由でOQLで特別に処理されますか?):
直感的ではないようで、直感的でない動作のバリエーションが予期せず表示され、使用可能なものを作成しようとすると速度が低下するため、これを尋ねます。
java - jhat OQLANDinwhere句
jhat OQL where句で接続詞[AND]を実行するにはどうすればよいですか?
私はこれをしたい:
つまり、canonicaldnでappTrustを含むすべてのX500Nameを検索したいと思います。canonicaldnの一部がnullになる可能性があるため、nullチェックが必要です[その場合、jhatはtoStringでnullポインター例外をスローします]。
しかし、リテラルの「and」は機能しません。
ところで、私はフィルター関数を使用して私の目的のためにこれを回避しました:
jmap - jhat や jmap などのプロファイルを設定して、定期的に、または例外が検出されるたびにスナップショットを作成できますか?
したがって、基本的に私たちの場合、サーバーが不思議なことにダウンし、頻繁に再起動すると正常に動作し始めます。これまで、パターンを確立することができませんでした。スレッド ダンプを調べることは役に立ちましたが、メモリ使用量も分析したいと考えています。これらのツールは、定期的に実行するように設定できますか (スナップショットを定期的に保存し続けます)、または例外またはクラッシュを検出するたびに実行できますか?
java - Java heapdump 分析は、インスタンス化されたオブジェクトのソースを見つけます
jvisualvm を使用してヒープ ダンプを分析しています。レポートから、クラス、インスタンス数、占有サイズを確認できます。
私が知りたかったのは、これらのオブジェクトのソース (インスタンス化されたクラス) です。特定のオブジェクトについて、すべてのソース クラスと、それらの各クラスによって作成されたインスタンスの数がわかれば、悪い候補を簡単に特定できると思います。
これはまったく可能ですか?もしそうなら、そのような情報を提供するための他のツールよりも優れたツールはありますか?
java - Java メモリ リークを修正する学習サイト
Javaメモリリークの修正を学ぶのに最適な場所はどこですか? 私は NET で良いリソースを見つけようとしてきましたが、残念なことに、おもちゃの例が議論されているのを見つけました。小さなおもちゃのダンプのトラブルシューティングもできますが、実際のアプリケーションのダンプはより難しく、手がかりがほとんどありません。
Jhat、JMap、VisualVM、MAT などのツールを試しました。
Java メモリ リークの修正について学ぶのに最適な場所はどこですか? 本の紹介も大歓迎です。
前もって感謝します。
java - GC がオブジェクトを収集しないのはなぜですか?
java.util.zip
データを圧縮/解凍するために呼び出し続けるJavaプログラムがあります。数秒以内にメモリが不足します。でメモリ ダンプを取得しjmap
、 で表示していjhat
ます。
ファイナライザの概要が表示されますTotal instances pending finalization: 0
。私が正しく理解していれば、(1) finalize() メソッドを持っている、(2) GC によってマークされている、(3) ファイナライズを待っているオブジェクトはありません。これは良さそうです。
特定のオブジェクトを見ると、このオブジェクトへの唯一の参照はjava.lang.ref.Finalizer
. Finalizer オブジェクトは、オブジェクトが GC されているかどうかに関係なく、finalize() メソッドを持つ各オブジェクトに対して作成されます。したがって、このDeflater
オブジェクトが GC されることを妨げているものは何もないように見えます。
0x7f4aeb7a35d0 のオブジェクト
java.util.zip.Deflater@0x7f4aeb7a35d0 のインスタンス (51 バイト)
このオブジェクトへの参照:
java.lang.ref.Finalizer@0x7f4aeb8607c8 (64 バイト) : フィールド参照先
プログラムは によって実行中に一時停止されSystem.in.read()
ます。しばらくメモリ使用量が減りません。
アップデート:
私はそれを明確にする必要があります。メモリ ダンプは、多くのオブジェクトが GC されていないことを示していますが、他のオブジェクト (ファイナライザー オブジェクトを除く) はそれらを参照していませんでした。GC されなかった理由を突き止めようとしています。