簡単な方法でJava仮想マシンを説明する-インタビューの質問+共通の知識ポイントの照合

Java仮想マシンは、主要なインターネット企業へのインタビューの中でますます重要な部分になりつつあります。Java開発者にとって、Javaの背後にある原則を理解して初めて、高品質のコードを記述し、複雑なバグの中から問題をすばやく見つけて見つけることができます。解決。

この記事では、最初にJava仮想マシンを使い始め、次にインタビューで頻繁にテストされた知識ポイントと、開発で一般的に使用されている主要なテクノロジーについて詳しく説明し、Javaとは何か、その理由を誰もが理解できるようにします。

スペースが限られているため、ここには一部のみが表示されています。フルバージョンが必要な友達は、下のリンクをクリックできます。
リンク:1103806531コード:CSDN

1.仮想マシンの概要

1.仮想マシンの概念

仮想マシン(仮想マシン)は、ソフトウェアによってシミュレーションされ、完全に分離された環境で実行される、完全なハードウェアシステム機能を備えた完全なコンピューターシステムを指します。物理コンピュータで実行できる作業を仮想マシンで実現できます。コンピュータで仮想マシンを作成する場合、物理マシンのハードディスクとメモリ容量の一部を仮想マシンのハードディスクとメモリ容量として使用する必要があります。各仮想マシンには、独立したCMOS、ハードディスク、およびオペレーティングシステムがあり、物理マシンのように仮想マシンを操作できます。

2. JVM仮想マシン

JVMはJava-Virtual-Machine、つまりJava Virtual Machineの略で、JVMはコンピューティングデバイスの仕様であり、さまざまなコンピュータ機能を実際のコンピュータでシミュレートすることによって実現される架空のコンピュータです。 。

3. JVM機能

ここに画像の説明を挿入

まず、あらゆる場所でコンパイルして実行することは、Java言語を学ぶときに誰もが知っていることです。実際、Java言語のクロスプラットフォームではなく、JVMのクロスプラットフォームです。Jvmが実行されると、Javaファイルは実行されませんが、コンパイルされた.classファイルが実行されます。

バイトコード

バイトコードファイルは、JVMが認識および実行できるバイナリファイルです。さまざまなプログラミング言語がコンパイラーによってコンパイルおよび処理された後、それらは統合されたバイトコード仕様ファイルに変換され、JVMが実行できるようになります。

クロスプラットフォーム

クロスプラットフォーム機能は、JVM仮想マシンが、頻繁に使用されるLinuxシステム、MacOSシステム、Winシステムなどのさまざまなコンピューターシステムで実行できることです。これにより、1回のコンパイルでどこでも実行できると理解されています。

クロスランゲージ

JVMの継続的な開発と最適化により、多くの言語はJVMの機能に依存しています。さまざまなプログラミング言語がコンパイルされ、JVMが認識できるバイトコードファイルに変換されます。これが、Javaシステムでのビジネスプログラミングがよく混合される理由です。

:現在および以降のJvmシリーズの記事は、HotSpot-VMおよびJDK1.8 +バージョンに基づいています。

第二に、仮想マシンの構造

Jvmの全体的な構造は、おおよそ次のとおりです。

ここに画像の説明を挿入

1.クラスローダー

クラス・ローダーは、JavaクラスをJVM仮想マシンにロードするために使用されます。ソース・コード・プログラムの.javaファイルは、コンパイラーによってコンパイルされた後、バイト・コードの.classファイルに変換されます。クラス・ローダーは、バイト・コードを読み取ってJavaに変換します。 .lang.Classクラスのインスタンス。

2.ランタイムデータ領域

メタデータ領域

以前はMethod-Areaと呼ばれていたJDK1.8からの引数は、クラス情報、定数、静的変数、ジャストインタイムコンパイラーによってコンパイルされたコード(仮想マシンによって読み込まれた)などのデータを格納します。

ヒープ領域

仮想マシンがオブジェクトインスタンスの格納を開始するときに作成される、すべてのスレッドで共有されるメモリ領域。

JVMスタック

スタックのデータ構造を参照し、Javaメソッドを実行するためのメモリモデルを格納できます。Java開発では、関数の実現には複数のサブルーチンメソッドの連携が必要です。プログラムが実行されると、プログラムはサブルーチンにジャンプし、スタック上の次の命令のアドレスを格納します。サブルーチン実行後、アドレスを取り出して元のプログラムに戻します。

ネイティブメソッドスタック

ネイティブメソッドスタックの機能は仮想マシンスタックの機能に似ており、JVMがネイティブメソッドを呼び出すときに機能します。

プログラムカウンター

比較的小さなメモリ空間は、現在のスレッドによって実行されるバイトコードの行番号インジケータとして理解できます。

3.実行エンジン

Java仮想マシンのコアコンポーネントは、バイトコード入力、バイトコード分析、および実行結果出力です。

3、ライフサイクル

ここで説明するJVMライフサイクルは、JVMがJavaプログラムを実行するときのサイクルを指します。

起動時の初期:初期クラスは、起動時にブートクラスローダーによって作成されます。

プログラムの実行:mainメソッドから開始して、プログラムの実行が終了するまでJavaプログラムを実行します。

仮想マシンの出口:プログラムの実行が正常に終了するか、例外またはエラーが発生して終了する場合は、出口出口メソッドを呼び出すこともできます。

4つのHotSpot仮想マシン

HotSpotは、Javaシステムで最もよく使用される仮想マシンであり、最新のメモリモデル、ガベージコレクター、アダプティブオプティマイザーを組み合わせて、多くの高度なテクノロジーを使用するJavaアプリケーションに最高のパフォーマンスを提供します。

主な理由:これは頻繁に使用され、ほとんどのJavaランタイム環境はHotSpot仮想マシンに依存しています。

やっと

この記事が皆様のお役に立てば幸いです。

スペースが限られているため、インタビューの一般的な知識ポイントとインタビューの質問はこの記事では示していませんが、建築家向けのビデオチュートリアルの完全なセットとJavaに関する体系的な資料を含むドキュメントにまとめました。以下のリンクをクリックして受け取ります

リンク:1103806531パスワード:CSDN

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_48655626/article/details/108732950