問題タブ [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.

0 投票する
11 に答える
253182 参照

java - 「java -server」と「java -client」の本当の違いは?

「java -server」と「java -client」の間に実質的な実際の違いはありますか?

Sunのサイトで見つけられるのは漠然としたものだけです

「-サーバーの起動は遅くなりますが、より速く実行されるはずです」。

本当の違いは何ですか?(現在JDK 1.6.0_07を使用しています。)

0 投票する
2 に答える
15602 参照

java - Javaでコミットされたメモリの正確な状態

値が MemoryUsage クラスからクエリされたときの「コミットされた」メモリの正確な意味は何なのか興味があります。そのクラスは、「committed は、Java 仮想マシンが使用できることが保証されているメモリの量 (バイト単位) を表す」と説明しています。これは、メモリが jvm プロセスによって使用されており、Java プロセスによって解放されるまで他のプロセスで使用できないことを意味しますか、それとも Java プロセスがその量のメモリを割り当てようとすると成功することを意味しますか? ? これは実装固有のものである可能性があることは認識していますが、ホットスポットにのみ関心があります。

0 投票する
1 に答える
1029 参照

java - Class.getConstantPool()

rt.jar ライブラリから Java のjava.lang.Classクラスを逆コンパイルすると、ネイティブ メソッド宣言があることに気付くでしょう。

少し前に、Sun の .class ファイル仕様を使用してクラスの逆コンパイルを行い、各 .class ファイルから定数プール レコードを取得することができました。しかし、それは実際にはクラスを逆コンパイルしていました。

ただ、Class クラスにこの署名があることに驚きました。そこで、Main() メソッドに小さなコードを書きました。

sun.reflect.ConstantPoolクラスを逆コンパイルすると、クラス、メソッド、パラメータ、宣言されたフィールドなどに関連する多くのメソッドがあることがわかります。

アプリを実行すると、次の HotSpot 例外が発生します。

どのクラスのConstantPoolも取得できないのはなぜですか? getConstantPool()がネイティブ/非パブリック メソッドであるという事実を考慮すると、Sun は私が直接呼び出すことを望んでいないと思います。

0 投票する
11 に答える
128965 参照

java - Java で正しいマイクロベンチマークを作成するにはどうすればよいですか?

Java で正しいマイクロベンチマークを作成 (および実行) するにはどうすればよいですか?

考えるべきさまざまなことを示すコードサンプルとコメントを探しています。

例: ベンチマークは時間/反復または反復/時間を測定する必要がありますか? その理由は?

関連:ストップウォッチのベンチマークは許容されますか?

0 投票する
2 に答える
497 参照

java - JavaでのHotSpotの最適化について

JavaでHotSpotの最適化を行いました。ただし、クラスのロードに関連するスペースについて心配しています(つまり、クラスに必要なメソッドは1つだけで、他のメソッドはロードしたくない)。どうすればいいですか?

0 投票する
3 に答える
460 参照

java - Java タスク ランタイム

まず第一に、これらは非常に基本的で原始的な質問であることを認めなければなりません...並べ替えと検索のためにJavaでさまざまなアルゴリズムを示し、ランタイムの値を取得したいと思います。私が解決できない問題があります:

  1. Hotspot コンパイルがあります。これは、無効にする必要があるランタイム最適化です (推測します)。

  2. ランタイムの時間値 (秒) を取得するにはどうすればよいですか? 実行前にタイマーを開始し、後で停止する...少し原始的なようです。そして、タイマーオブジェクト自体がランタイムを消費します...それを避ける必要があります。

これらの問題を解決するために利用できる Java API はありますか?

ありがとう、クラウス

0 投票する
3 に答える
8245 参照

java - Java Hotspot エラーを理解する方法

JVM がクラッシュすると、エラー ログ hs_err_pid.log が書き込まれます。JVM がクラッシュした原因を知りたいですか? これらのログを理解する方法は、このログがどのように配置されているかについてどこかに文書化されています。ネットで調べてみましたがだめでした(-_-;)

関連する URL を指摘していただければ幸いです。ありがとう。

0 投票する
11 に答える
5646 参照

java - 初めて Java ループが SLOW で実行されるのはなぜですか? [Sun HotSpot 1.5、sparc]

Solaris SPARC ボックスでいくつかの Java コードのベンチマークを行っているときに、ベンチマークされた関数を初めて呼び出したときに、実行速度が非常に遅い (10 倍の差) ことに気付きました。

  • 最初 | 1 | 25295.979 ミリ秒
  • セカンド | 1 | 2256.990 ミリ秒
  • サード | 1 | 2250.575 ミリ秒

どうしてこれなの?JIT コンパイラが疑わしいのですが、これを確認する方法はありますか?

編集:いくつかの回答に照らして、このコードがこの動作を示すことができる最も単純なテストケースであることを明確にしたかったのです。したがって、私の目標は、高速に実行することではなく、何が起こっているのかを理解して、実際のベンチマークで回避できるようにすることです。

解決済み: Tom Hawtin は、私の "SLOW" タイムが実際には妥当であると正しく指摘しました。この観察に続いて、デバッガーを Java プロセスに接続しました。最初のループでは、内側のループは次のようになります。

次の反復では、ループは次のようになります。

そのため、HotSpot は内側のループからメモリ アクセスを削除し、1 桁高速化しました。

レッスン:計算してみよう! トムの計算は自分でやるべきだった.

ベンチマーク Java コード: