問題タブ [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 投票する
4 に答える
3601 参照

java - Javaでボックス化されたプリミティブのストレージコストはいくらですか?

ボックス化されたプリミティブは、Java のようにjava.lang.Integer、またはjava.lang.CharacterJava でどのくらいの大きさですか?

Anintは 4 バイトで、通常のポインターも 4 バイトです (JVM によって圧縮されていない場合)。したがって、整数 (キャッシュなし) のコストは4 bytes + 4 bytes = 8 bytes? ボックス オブジェクト内に非表示のフィールドが他にないか、またはオブジェクトに関して追加のオーバーヘッドが発生していませんか (つまり、私が認識していないオブジェクトの一般的なコストはありますか?)。

キャッシングの問題には興味がありません。特定の範囲内の整数が JVM によってキャッシュされることを知っています。

質問を言い換えることができます:ボックス化された値とプリミティブ値に使用されるメモリの量に乗算される最大係数は何ですか?

編集: JVM の複数の実装が存在することは理解しています。典型的な 32 ビット HotSpot 実装の典型的なコストは?

0 投票する
4 に答える
18857 参照

java - メソッドエリアとPermGen

HotSpot JVMのメモリ構造を理解しようとして、 「メソッド領域」「PermGen」スペースという2つの用語と混同されました。私が参照したドキュメントによると、メソッド領域にはバイトコードを含むクラスとメソッドの定義が含まれています。他のいくつかのドキュメントは、それらがPermGenスペースに格納されていると言っています。

では、これら2つのメモリ領域は同じであると結論付けることができますか?

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

java - Javaメソッドの最大サイズを増やすためのJavaHotspotコマンドラインパラメータ

HotspotがコンパイルするJavaメソッドの最大サイズ(8000バイトコードから)を増やすためのコマンドラインパラメーターはありますか?

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

jvm - output.cfgファイルが生成される-XX:+ PrintCFGToFile jvmオプションを使用しますか?

JDK 6のfastdebugビルドをインストールし、次のコマンドを実行しました。

java -XX:+PrintCFGToFile Test

しかし、印刷された情報を含むファイルが見つかりませんでした... LinuxとWindowsの両方の運用システムで試しましたが、成功しませんでした。諦めた後、ソース(OpenJDK 7ソース、Ubuntu)からJDKをビルドしましたが、成功しませんでした。同じように、印刷"VM option '+PrintCFGToFile'"されますが、クラスが実行されたディレクトリにも、JDKbinディレクトリにもファイルが作成されませんでした。ファイルシステムの.cfg"、何も見つかりません...ソースを確認しましたが、ファイルの名前は実際には" output.cfg "のようです(間違っていない場合はCFGPrinterです)。

どうしたの?追加のオプションを指定する必要がありますか?制御フローグラフ情報を含むこのファイルをどこでどのように取得しますか?

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

java - (VisualVM をリモートで使用するために) jmxremote ポートを設定する必要はありませんか?

さまざまな Java アプリを開発するためのリモート Linux ボックスを共有し、ここで説明されているように、ssh 経由で VisualVM を使用してアプリをプロファイリングします。プロセス/ユーザー間でポート番号を割り当て/プロビジョニングする必要なく、Java プロセスで JMX/プロファイリングを有効にする方法はありますか? プロファイリングを有効にするためだけに (一意の) ポート番号を指定していることを常に確認する必要があるのは面倒です。

これをより具体的にするために、ポートのハードコーディングは明らかに機能せず、競合します。

プロセスを実行するたびに常に一意のポートを指定する必要がありますが、これは面倒です---ポートが他のプロセスと競合したり、他のユーザーと競合したりしないようにする必要があります。

現在、以下を使用しています。

ただし、占有されているポート番号に出くわすことがあります。

より洗練されたスクリプト (占有されているポート番号を照会netstatし、競合がないことを期待するなど) を続行できますが、より良い方法があるかどうか、または間違っているかどうか疑問に思っています。

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

java - Hotspot7 hsdis PrintAssembly Intel 構文

Hotspotを使用するたびに-XX:+PrintAssembly、恐ろしい AT&T 構文を読まなければならないことに悩まされます。

Intel構文を使用するように指示する方法はありますか?

0 投票する
4 に答える
2766 参照

java - HotSpot が巻き上げを使用して以下を最適化するのはなぜですか?

「Effective Java」で、著者は次のように述べています。

HotSpotによって最適化できます


私はそれについて非常に混乱しています。変数doneは通常constではありません。コンパイラがそのように最適化できるのはなぜですか?

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

java - Java32ビットと64ビットの間の空のループのパフォーマンスに大きな違いがあります

私の自由な時間に、私は最近、マルチスレッドの数学演算のフレームワークを作成し、それをテストするために、千の素数の最初の数を計算しました。

しかし、もっと時間がかかる必要があったので、このコードをプライム計算に挿入しました。

長い間、私は64ビットマシンでコードを記述してコンパイルし、32ビットマシンでテストしていました。

次に、64ビットマシンで実行したところ、パフォーマンスに大きな違いがあることに気づきました。

同じコードで、完全に類似した64マシンの実行には100ミリ秒未満かかりますが、32マシンの実行には52000ミリ秒かかります(同じホスト上の2つの仮想マシン)。

異なるコンピューターのWindowsとUbuntuでテストしましたが、同じ.classファイルを使用しても、この32ビットと64ビットの大きな違いがあります。

これは、パフォーマンスの違いを再現するために使用できる簡単なコードです。

そして、これが私がコンパイルした.classファイルです。

今私の質問。

64ビットマシンを使用することでパフォーマンスが向上することは知っていますが、それではこの大きな違いを説明することはできません。それで、なぜこれが起こっているのか誰かが知っていますか?

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

java - Java:YoungGen のサイズを大きくして GC のパフォーマンスを向上させる

次の記事を読んでいました: http://java.sun.com/docs/hotspot/gc1.4.2/example.htmlそして、次の行を理解するのに問題があります:

私の質問は、この場合、YoungGen のサイズを大きくするとどのように役立つかということです。アプリケーションが YoungGen に割り当てるオブジェクトの総数は一定です。