問題タブ [jvm-hotspot]
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 - ディスパッチ テーブルへの JIT への切り替えに Java が通常必要とするプログラマーの「支援」はどれくらいですか?
Javaは全面的に最適化を行い、ケースの数、スイッチが疎か密か、およびコードがJITがそのコードを最適化するのに十分なほどホットであるかどうかに応じて、スイッチを最適化できることを理解しています。コードが実際に非常にホットであると仮定して、ビットごとの使用やテスト対象の変数に対する「アシスト」をさらに提供する必要があるか、変数を「より適切な」数値にビットごとにシフトする必要があるかどうか疑問に思っています。「より良い」は、0xFFXX ではなく 0xXX です。何が必要かを具体的に述べたホットスポット JIT ドキュメントはありますか? 「xxx の一般的なプログラミング ガイドラインに従ってください」ではなく。
java - Javaでインラインを強制する
私はこの投稿を見ました。良い感じ。ただし、HotSpot(サーバーやクライアントに依存しない、またはSunのバージョンに依存しない)がコードをインライン化する場合、作成者またはその他の認識している人々がコーディングのコツを教えてくれます。
java - Java HotSpot VMの開発環境をセットアップするにはどうすればよいですか?
Java HotSpot VMを理解するための最良の方法は何ですか?また、ソースコードに変更を加えて独自の機能を追加したい場合、最適な開発環境は何でしょうか(ctagsは大規模なコードベースでうまく機能しますか、それとも本格的なIDEが必要ですか)。
java - JVMクラッシュログのBufferBlob::Interpreterはどういう意味ですか?
アプリケーションで時折発生するJVMクラッシュを調査しています。hs_errファイルには、クラッシュに関する次の詳細が含まれています。
..。
..。
..。
つまり、これは、Javaコードを実行しているときにJVMがセグメンテーション違反に遭遇したことを示しています。エラーログには、クラッシュしたスレッドのスタックに関する情報も含まれています。
クラッシュからコアファイルに接続し、スタックの詳細を取得するためにGDBを使用しました。これにより、次の出力が得られます。
これは、元のバグレポートにリストされている6つのlibjvm.soフレームが、Javaロックの取得に関連していることを示しています。ただし、ロックを使用するコードがorg.myapp.AppClass.getBytes()内に見つかりません。
スタック内のBufferBlob::Interpreter行はどういう意味ですか?これらのJavaスタックフレームですか?JVMスタックフレーム?これらのスタックフレームで何が呼ばれていたかを理解することは可能ですか?
注:新しいHotspotJVMに切り替えようとすることを提案しないでください。私はCMSコレクターに依存していますが、最近のV1.6ホットスポットJVMはどれもCMSコレクターで十分に安定していません。
編集:このドキュメント(http://www.oracle.com/technetwork/java/javase/tsg-vm-149989.pdf)には、「v」フレームは「VMで生成されたスタブフレーム」であると記載されています。これが何を意味するのか分かりますか?
EDIT2:org.myapp.AppClass.getBytes()はDataInputStreamから読み取ります。これには、次のスタックトレースが含まれる可能性があります。
この最後のメソッドはロックを取得します。これは、上記のJVMコードへの最終的な呼び出しのソースである可能性があります。上記のこのスタックには、getBytes()の下に5つのJavaスタックフレームがあるという優れた機能があります。これは、「Javaフレーム」のリストにあるBufferBlob::Interpreterの5行とうまく一致します。
これにより、いくつかの新しい質問が発生します。
- 「ネイティブフレーム」セクションの下のBufferBlob::Interpreterの5行が、「Javaフレーム」セクションの下の同じ行の単なる複製である可能性はありますか?
- エラーログにこれらの5つのスタックフレームの詳細が表示されないのはなぜですか?
編集3-このOracleのバグは同じ/類似のバグである可能性が高い:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id = 6676175
示されているスタックトレースは同一ではありませんが、6u14で修正されたrevoke_and_rebiasのまれな競合状態について言及しています。
EDIT4-バウンティメッセージには「ホットスポットの実装に精通している」と記載する必要があります
java - JRockit JVM と HotSpot JVM の比較
2 つの JVM はすべて標準 JVM 仕様に依存しているため、2 つの JVM の長所と短所について簡単な情報を教えていただければ幸いです。
java - JVM ロックレスでのメモリ割り当て
Java で実行する場合new Object()
、jvm はロックレス アルゴリズムを使用してメモリを割り当てますか、それともロックする必要がありますか?
この場合に言及している JVM は Hotspot VM です。私がそれについて知っていることはほとんどありませんが、ポインターをインクリメントするだけでメモリを超高速に割り当てることができます。しかし、複数のスレッドの場合、そのインクリメントにはロックまたは CAS が必要ですか?
java - -XX:MaxPermSize(-XX:PermSizeありまたはなし)
Java.lang.OutOfMemoryError:PermGenスペースエラーが発生し、指定したパラメータ-Xms
とパラメータ以外のTomcatJVMパラメータを確認しました。少しプロファイリングした後、PermGenスペースでガベージコレクションが発生し、フルに実行されないようにすることがあります。-Xmx
-XX:MaxPermSize=128m
私の質問は次のとおりです。-XX:MaxPermSize
私も指定した場合の違いは何-XX:PermSize
ですか?合計メモリがXmx+maxPermSizeになることはわかっていますが、が指定されているときにそこにある-XX:PermSize
べきではない理由は他に-XX:MaxPermSize
ありますか?
これらのJVMパラメータを実際に扱った経験がある場合は、共有してください。
ps。JVMはHotSpot64ビットサーバーVMビルド16.2-b04です
java - ヒープダンプから、Java オブジェクトが在職期間または Eden スペースにあるかどうかを知るにはどうすればよいですか?
Hotspot JVM ヒープ ダンプがあり、オブジェクトが Tenure スペース、Eden スペース、または Survivor スペースのいずれに存在するかを調べようとしましたが、できませんでした。
誰かが私を助けることができれば感謝します。
java - JIT を使用したインタープリターは、JIT を使用しない場合よりも高速なコードを生成するのはなぜですか?
JIT コンパイラーによってバイトコードをマシンコードにコンパイルするという概念については、まだよくわかりません。非 JIT インタープリターよりも高速なコードを生成する理由を知りたいです。このプロセスがどのように行われるかについて、誰かが私に良い例を教えてもらえますか?
java - Java 7 は少なくとも Java 6 と同じくらい安定していますか?
Java 7 が最初にリリースされたとき、コンパイラの最適化にいくつかのバグがあったため、Java 7を何にも使用しないようにという多くの提案があったことを覚えています。これは明らかに単なる仮説ではありませんでした。それ以来、私は状況を注意深く追跡していません。これらの問題は解決されており、一般的に現時点で安全に使用できると考えられていますか?
java.com のこのページを見ると、おそらくまだ準備が整っていないのではないかと思いますが、あまり詳しく読みたくありません。まだ安全でない場合-XX:-UseLoopPredicate
、VM 引数として使用するのに十分ですか?
Lucene の特定の問題だけでなく、Java 7 の一般的な安定性についても言及していることに注意してください。Java 7 は少なくとも Java 6 と同じくらい安定していますか?