問題タブ [jvm]
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 - 整数配列は、JVM で内部的にどのように保存されますか?
Java の int の配列は、32 ビット値のブロックとしてメモリに格納されます。整数オブジェクトの配列はどのように格納されますか? すなわち
Integer 配列の各要素は Integer オブジェクトへの参照であり、Integer オブジェクトには他のオブジェクトと同様にオブジェクト ストレージのオーバーヘッドがあると思います。
ただし、整数が不変であり、int の配列のように格納されることを考えると、JVM がフードの下で魔法のような賢さを発揮することを願っています。
私の希望はひどく素朴ですか?パフォーマンスの最後の一滴までが重要なアプリケーションで、Integer 配列は int 配列よりもはるかに遅いですか?
java - HP-UX 環境の JVM では、C ヒープと Java ヒープのどちらで実行されますか?
HP-UX 環境の特定の Java アプリケーションで奇妙な問題が発生しています。
ヒープは -mx512 に設定されていますが、gpm を使用してこの Java プロセスのメモリ領域を確認すると、1.6GB 以上の RSS メモリを使用し、1.1GB が DATA 領域に割り当てられていることがわかります。24 ~ 48 時間で非常に急速に成長し、その後大幅に減速しますが、数時間ごとに 2MB ずつ増加します。ただし、Java ヒープにはリークの兆候は見られません。
これがどのように可能であったかについて少し調べてみたところ、Java ヒープと C ヒープのメモリ リークに関する HP の記事が見つかりました: http://docs.hp.com/en/JAVAPERFTUNE/Memory-Management.pdf
私の質問は、C ヒープと Java ヒープで何が実行されるかを決定するものです。Java ヒープを介して実行されないものについては、C ヒープで実行されているオブジェクトをどのように識別しますか? さらに、Java ヒープは C ヒープ内にありますか?
jvm - 他の JVM 言語が必要な理由
ここで、JVM で実行される Java 以外の言語が多数あることがわかります。私は、JVM で実行される他の言語の概念全体について少し混乱しています。そう:
JVM に他の言語を使用する利点は何ですか?
JVM 用の言語/コンパイラを作成するには、(大まかに言えば) 何が必要ですか?
JVM で (Java 以外の) 言語でコードをどのように記述/コンパイル/実行しますか?
編集:承認された回答で回答された 3 つのフォローアップの質問 (元のコメント) がありました。読みやすくするために、ここに転載します。
たとえば、JPython で作成されたアプリは、Java アプリとどのようにやり取りするのでしょうか?
また、その JPython アプリケーションは JDK 関数/オブジェクトのいずれかを使用できますか??
Jaskell コードの場合、それが関数型言語であるという事実は、JDK との互換性を失わないのでしょうか?
java - Java VM はメモリ内のオブジェクトを移動しますか? もしそうなら、どのように移動しますか?
Java 仮想マシンはメモリ内のオブジェクトを移動しますか? もしそうなら、移動したオブジェクトへの参照の更新をどのように処理しますか?
オブジェクトを分散方式 (つまり、複数のサーバーにまたがる) で保存するというアイデアを検討しているので質問しますが、効率上の理由からサーバー間でオブジェクトを移動する機能が必要です。オブジェクトは、リモートサーバー上のオブジェクトであっても、相互へのポインターを含むことができる必要があります。移動したオブジェクトへの参照を更新する最善の方法を考えようとしています。
これまでのところ、私の2つのアイデアは次のとおりです。
- オブジェクトが移動した場合に更新する、オブジェクトの存続期間中移動しない場所での参照間接化を維持します。しかし、これらの間接化はどのように管理されているのでしょうか?
- 各オブジェクトの逆参照のリストを保持して、オブジェクトが移動された場合に何を更新する必要があるかを把握します。もちろん、これによりパフォーマンスのオーバーヘッドが生じます。
これらのアプローチに関するフィードバックと、代替アプローチの提案に興味があります。
java - JVM は末尾呼び出しの最適化を防止しますか?
Web サービスを構築するのに適した関数型言語は何ですか?という質問に関するこの引用を見ました。
特に Scala は、実行できる構成の種類を制限する自己再帰関数を除き、末尾呼び出しの削除をサポートしていません (これは JVM の基本的な制限です)。
これは本当ですか?もしそうなら、この根本的な制限を生み出すのは JVM について何ですか?
java - java.util.Random にサードパーティ クラスの特定のシードを与えるにはどうすればよいですか?
サードパーティのクラス ファイル (私が書いていないクラス) をロードして実行する Java プログラムがあります。これらのクラスはjava.util.Random
、デフォルトで、インスタンス化されるたびにランダムな開始シード値を生成する を使用することがよくあります。再現性の理由から、これらのクラスには毎回同じ開始シードを与え、私の裁量でのみ変更したいと考えています。
明らかな解決策のいくつかと、それらが機能しない理由を次に示します。
サードパーティのクラスファイルで別のランダム クラスを使用します。ここでの問題は、クラス ファイルをロードするだけで、ソースを変更できないことです。
カスタム クラスローダーを使用して、JVM のバージョンの代わりに独自の Random クラスをロードします。
java
Java ではクラスローダーがパッケージ内のクラスをオーバーライドできないため、このアプローチは機能しません。rt.jar の
java.util.Random
実装を独自のものに交換するか、ファイルを JVM の信頼できる場所に置きます。これらのアプローチでは、アプリケーションのユーザーが自分のマシンにインストールされている JVM をいじる必要があり、役に立ちません。bootclasspath にカスタム
java.util.Random
クラスを追加します。これは技術的には機能しますが、この特定のアプリケーションでは、このアプリケーションはエンド ユーザーが IDE から実行することを目的としているため、実用的ではありません。アプリをユーザーにとって便利に実行できるようにしたいので、ブートクラスパスを強制的に設定するのは面倒です。これは、Eclipse などの IDE から実行することを目的としているため (デバッグを容易にするため)、スクリプトで非表示にすることはできません。
では、どうすればこれを行うことができますか?
scala - Scala REPL - JVM 言語における再帰的オーバーロード セマンティクス
Scala のコマンド ライン REPL を使用する:
与える
REPL でオーバーロードされた再帰メソッドを定義できないようです。これは Scala REPL のバグだと思って提出しましたが、ほとんど即座に「wontfix: この 2 つのメソッドをコンパイルする必要があるため、インタープリターのセマンティクスを考えると、これをサポートできる方法がわかりません」で閉じられました。一緒。" 彼は、メソッドを囲んでいるオブジェクトに入れることを勧めました。
その理由を説明できる JVM 言語の実装または Scala の専門家はいますか? たとえば、メソッドが互いに呼び出されると問題になることがわかりますが、この場合はどうなりますか?
または、これが大きすぎる質問で、前提知識がもっと必要だと思われる場合は、言語の実装、特に JVM に関する書籍やサイトへの適切なリンクを誰か教えてください。(John Rose のブログと本 Programming Language Pragmatics については知っていますが、それだけです。:)
java - JVM が使用するようにプロキシを設定する方法
多くの場合、Java アプリはインターネットに接続する必要があります。最も一般的な例は、XML ファイルを読み取っていて、そのスキーマをダウンロードする必要がある場合に発生します。
私はプロキシサーバーの背後にいます。プロキシを使用するように JVM を設定するにはどうすればよいですか?
java - Java VM EXCEPTION_ACCESS_VIOLATION の考えられる原因?
Java VM が EXCEPTION_ACCESS_VIOLATION でクラッシュし、hs_err_pidXXX.log ファイルが生成される場合、それは何を示していますか? エラー自体は基本的にヌルポインタ例外です。これは常に JVM のバグが原因ですか? それとも、ハードウェアの誤動作やソフトウェアの競合など、他の原因がありますか?
編集: ネイティブ コンポーネントがあります。これは win32 上の SWT アプリケーションです。
eclipse - Eclipseに最適なJVM設定は何ですか?
Eclipseを実行するために見つけた最高のJVM設定は何ですか?