問題タブ [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 - .NET ランタイム vs. Java ホットスポット: .NET は 1 世代遅れているか?
.NET と Java の実行環境で収集できた情報によると、現在の状況は次のとおりです。
最新の Java VM は継続的な再コンパイルを実行でき、プロファイリングと組み合わせることでパフォーマンスを大幅に向上させることができます。古い JVM は JIT を採用していました。この記事の詳細: http://www.ibm.com/developerworks/library/j-jtp12214/ および特に: Java の理論と実践: 動的コンパイルとパフォーマンス測定
.NET は JIT または NGEN を使用してネイティブ コードを生成しますが、ネイティブ コードが生成されると、それ以上の (ランタイム) 最適化は実行されません。
ベンチマークはさておき、聖戦をエスカレートさせるつもりはないが、これは Java Hotspot VM が .Net よりも 1 世代進んでいることを意味するのだろうか。Java VM で採用されているこれらのテクノロジは、最終的に .NET ランタイムに組み込まれるのでしょうか?
java - 条件付き JIT コンパイル
Javaでは、次のように条件付きコンパイルを行うことができます
コンパイラは、DO_CHECK が常に false であることを確認し、if ステートメント全体を削除します。ただし、特にライブラリコードでは、条件付きコンパイルを使用できない場合がありますが、条件付き JIT コンパイルを使用できるのでしょうか?
doCheck = false で LibraryClass を構築した場合、JIT コンパイラ (Hotspot 内) は if ステートメントも削除しますか?
更新: JIT コンパイルはおそらくインスタンス レベルでは行われないことに気付いたので、これは機能しないと思いますが、静的な方法があるのではないでしょうか?
java - スタック消費の変動性はどこから来るのですか?
この質問からテスト コードを実行し、JVM のスレッド スタック サイズをいじっているうちに、結果が必ずしも再現可能であるとは限らないことがわかりましjava.lang.StackOverflowError
た。
私の質問は、「スタック スペース消費量の変動の原因は何ですか?」です。
また、割り込みのスタックをこのプログラムのメインスレッドに置くことはできますか? 結果は、他の JVM 実装やオペレーティング システムでも同様に非決定的になりますか?
テストコード
スタックサイズ設定ごとにテストプログラムを複数回実行する愚かなbashスクリプト
結果
java - XX:MaxDirectMemorySizeのデフォルト
XX:MaxDirectMemorySizeのデフォルト値は何ですか?
java - クラスが異なるクラスローダーによってロードされる場合、(sun-jvm)ホットスポットの最適化は複数回行われますか?
(コンテナ-)アプリケーションが、他のいくつかの/サブアプリケーションをホストするために複数のクラスローダーを作成していると想像してください。
コンテナアプリ用の-say-rootクラスローダーがあります。サブアプリケーションがロードされるたびに、コンテナはこのアプリケーションの新しいクラスローダーを作成します。
一部のサブアプリケーションは同じクラスを使用しますが、コンテナのクラスローダーによってロードされなかったため、各サブアプリケーション(より良い:クラスローダー)はクラスAなどのコードをロードします。したがって、permspaceは2回入力されます。1回はサブアプリケーション用です。 #1とサブアプリ#2の場合は1回。
これは、太陽のホットスポット最適化にとって何を意味しますか?
同じ最適化がクラスAで2回、クラスローダーごとに1回発生しますか?
または、これを回避する「魔法」が組み込まれていますか?(最適化は一度行われます)
誰かがリンクを知っていますが、これは説明されましたか?
私はjdk1.6で出荷される太陽(サーバー)VMについて言及しています
java - 特定のメソッド/クラスに対してJavaJITを無効にしますか?
Javaアプリケーションで、JITがコードを壊すという問題が発生しています。JITを無効にすると、すべて正常に動作しますが、実行速度は10〜20倍遅くなります。
特定のメソッドまたはクラスのJITを無効にする方法はありますか?
編集:私はUbuntu 10.10を使用しており、次の両方で同じ結果が得られます。
と:
java - インスタンスがどの GC 世代に存在するかをプログラムで調べることはできますか?
この質問はHotSpot 世代に限定されています。特定のインスタンスがどの世代に住んでいるかをプログラムで調べる方法はありますか? 次のようなデータ:
- 若い世代か古い世代か?
- 若い場合、どのサバイバー スペースですか?
- TLABの中?どのスレッド?
次のようなことができる限り、任意の手法 (例: BTrace、JVMTI ) が機能します。
物乞いは選択者になることはできませんが、理想的には、関心のあるインスタンスが発生した瞬間にある世代から別の世代に移動された時期を知ることもできます(つまり、イベント コールバックに基づいており、ポーリングに内在する遅延とオーバーヘッドには関心がありません)。
理由もなく「いいえ」と言う答えには興味がありません:)
java - Java での境界チェック
「ホットスポットは Java の境界チェックを削除できます。」誰でもこれを説明できますか?実際に C++ と Java の違いを分析しています。それは宿題ではなく、私自身の興味で分析しています。
garbage-collection - JMX (HotSpot) で「フル GC」の頻度を監視することは可能ですか?
JMX でフル GC の頻度を監視したい。MBean は GC カウントを公開します。(参照http://download.oracle.com/javase/1.5.0/docs/api/java/lang/management/GarbageCollectorMXBean.html - java.lang:type=GarbageCollector,name=)。
問題は、MBean がマイナー GC とフル GC を区別しないことです。
誰かがアイデアを持っていますか?
ありがとう。
アルノー
java - CompilerThread での JVM クラッシュ
SIGSEGV を使用して、特定のメソッド (常に同じメソッド) をコンパイルしようとすると、Java アプリケーションがほぼ一貫してクラッシュします。
クラッシュ ログ (興味深い部分...):
コア ダンプを作成して接続しようとしましたが、そこに CompilerThread が見つかりませんでした (おそらくは強制終了されている可能性があります)。