日本語
[面接の質問】JVMの構造と原則

[面接の質問】JVMの構造と原則

JVMに関する面接の質問まとめ

23-06-27 未記入内容の補充 > 23-06-27 23-07-01 内容の補充及び作成完了

Java の概要

1. Javaの開発哲学

Write Once, Run Anywhere

  • プラットフォームと独立した言語を志向

  • 同じ言語で組まれたコードをどのようなオペレーティングシステムでも実行できることに焦点を当てて開発された(一種のクロスプラットフォーム)。

2. JDK

  • Java Development Kit Java開発ツールであり、JRE、JVMを全て含む。基本的にJavaで作ったプログラムだけを実行すればいいユーザーと違って、開発者はJDKをインストールしなければならない。JDKにはCompilerが含まれています。

  • Java Runtime Environment Java実行環境としてJava Class Library, Java Class Loader, JVMを含んでいます。クラスローダーとライブラリを介して作成されたJavaコードをライブラリと組み合わせてJVMで駆動できるようにする。

  • Java Virtual Machine

JVM とは?

  • Java Virtual Machine、Java仮想マシン。

  • Javaプログラム実行環境を整えてくれるソフトウェア

Java Code → Compiler → 機械語

アプリケーション実行のためのメモリを割り当てられ、Java Runtime Data Areaを構築する。

Runtime Data Area

  • Heap領域

  • Method 領域

上の2つの領域は全てのThreadが共有

  • PC Register

  • Native Method Stack

  • Stack領域

上記の3つの領域はThreadごとに開始時に生成され、終了時に消滅します。

各領域の詳細

1. Heap

  • クラスのインスタンス、配列が保存される空間。

  • 動的なメモリ管理システム'Garbage Collection'

2. Method

  • クラス、インターフェースの構造を保存する空間

3. Stack

  • Cのスタック構造と似ており、地域変数や関数の実行結果を保存する。

  • 関数の呼び出しとリターンを担当し、Stack Frameを持つ。

  • Stack Frameとは?

各関数ごとに関数の呼び出し情報が含まれている区分された空間。 FrameはLIFO方式で処理される 余裕空間がない時にフレームが追加される場合 → Stack Overflow発生 プロローグ、エピローグを活用したポインタ方式でスタック復帰位置確認

4. Native Method Stack

  • C, CPPで作成されたメソッドの実行スタック

  • コード実行時にNative Method Stackが割り当てられます。

  • StackOverflowErrorやOutOfMemoryErrorが発生する可能性がある。

  • スタックのサイズを動的に調整することができます。

5. PC Register

  • 各スレッドごとにPC Registerを保有

  • スレッドが現在割り当てられている命令を実行する時、命令のアドレスを記録します。

  • 命令ごとに値を安定的に変動させて指し示す値を実行するようにする。

参考

JVM Document gorainiさんのブログ sgwon1996さんのvelog

댓글 작성

게시글에 대한 의견을 남겨 주세요.

댓글 0