Java 仮想マシンは複数のスレッドの同時実行をサポートでき、各 Java 仮想マシン スレッドには独自の pc レジスタがあります。いつでも、Java 仮想マシン スレッドは 1 つのメソッドのコードのみを実行します。スレッドによって実行されているメソッドは、スレッドの現在のメソッドと呼ばれます。 このメソッドがネイティブでない場合、pc レジスタには、Java 仮想マシンによって実行されているバイトコード命令のアドレスが格納されます。メソッドがネイティブの場合、pc レジスタの値は未定義になります。 pc レジスタの容量は、少なくとも returnAddress 型のデータまたはプラットフォームに依存するローカル ポインター値を格納できる必要があります。 Java 仮想マシン スタック 各 Java 仮想マシン スレッドには独自のプライベート Java 仮想マシン スタックがあり、これはスレッドと同時に作成され、スタック フレームを格納するために使用されます。 Java 仮想マシン スタックは、ローカル変数と計算されていない結果の一部を保存するために使用されます。さらに、メソッドの呼び出しと戻りにおいても重要な役割を果たします。 Java 仮想マシン スタックは、スタック フレームのポップとプッシュ以外の要因の影響を受けないため、スタック フレームをヒープ内に割り当てることができ、Java 仮想マシン スタックが使用するメモリが連続していることを保証する必要がありません。 Java 仮想マシンの実装では、プログラマーまたはエンド ユーザーに仮想マシン スタックの初期容量を調整する手段を提供する必要があります。動的に拡張および縮小できる Java 仮想マシン スタックの場合、最大容量と最小容量を調整する手段を提供する必要があります。 Java 仮想マシン スタックでは次の例外が発生する可能性があります。
Javaヒープ Java 仮想マシンでは、ヒープはすべてのスレッドで共有できる実行時メモリ領域であり、すべてのクラスインスタンスと配列オブジェクトにメモリが割り当てられる領域でもあります。 Java ヒープは仮想マシンの起動時に作成されます。自動管理システム (ガベージ コレクターとも呼ばれます) によって管理されるさまざまなオブジェクトを格納します。これらの管理対象オブジェクトは明示的に破棄する必要はなく、破棄することもできません。仮想マシンの実装者は、システムの実際のニーズに基づいて自動メモリ管理テクノロジを選択できます。 Java ヒープの容量は固定することも、プログラムの実行時に動的に拡張することもでき、また、必要なスペースが多すぎる場合は自動的に縮小することもできます。 Java ヒープによって使用されるメモリが連続していることを保証する必要はありません。 Java 仮想マシンの実装では、プログラマーまたはエンド ユーザーに Java ヒープの初期容量を調整する手段を提供する必要があります。動的に拡張および縮小できる Java ヒープの場合、最大容量と最小容量を調整する必要があります。 Java ヒープでは次の例外が発生する可能性があります。
方法領域 Java 仮想マシンでは、メソッド領域はすべてのスレッドで共有できるランタイム メモリ領域です。メソッド領域は、従来の言語のコンパイルされたコード保存領域や、オペレーティング システム プロセスのテキスト セグメントと非常によく似ています。実行時定数プール、フィールドとメソッドのデータ、コンストラクタと通常のメソッドのバイトコードの内容など、各クラスの構造情報を格納します。また、クラス、インスタンス、およびインターフェースの初期化で使用されるいくつかの特殊なメソッドも含まれます。 メソッド領域は、仮想マシンの起動時に作成されます。メソッド領域はヒープ内の論理コンポーネントですが、単純な仮想マシン実装では、この領域にガベージ コレクションと圧縮を実装しないことも選択できます。メソッド領域の容量は固定することも、プログラムの実行時に動的に拡張することもでき、また、必要なスペースが多すぎる場合は自動的に縮小することもできます。メソッド領域は実際のメモリ空間では連続していない可能性があります。 Java 仮想マシンの実装では、プログラマーまたはエンド ユーザーにメソッド領域の初期容量を調整する手段を提供する必要があります。動的に拡張および縮小できるメソッド領域の場合、実装では最大容量と最小容量を調整する手段を提供する必要があります。 メソッド領域では次の例外が発生する可能性があります。
ランタイム定数プール ランタイム定数プールは、クラス ファイル内の各クラスまたはインターフェイスの定数プール テーブルのランタイム表現です。これには、コンパイル時に認識される数値リテラルから、実行時に解決する必要があるメソッドまたはフィールド参照まで、さまざまな種類の定数が含まれます。ランタイム定数プールは従来の言語のシンボル テーブルに似ていますが、格納されるデータの範囲は通常の意味でのシンボル テーブルよりも広くなります。 各ランタイム定数プールは、Java 仮想マシンのメソッド領域に割り当てられます。クラスとインターフェースを仮想マシンにロードすると、対応するランタイム定数プールが作成されます。 クラスとインターフェースのランタイム定数プールを作成するときに、次の例外が発生する可能性があります。
ネイティブメソッドスタック Java 仮想マシンの実装では、ネイティブ メソッドの実行をサポートするために従来のスタックが使用される場合があります。このスタックはローカル メソッド スタックです。 Java 仮想マシンが別の言語を使用して命令セットインタープリターを実装する場合は、ネイティブメソッドスタックも使用できます。 Java 仮想マシンがネイティブ メソッドをサポートしていない場合、または従来のスタックに依存していない場合は、ネイティブ メソッド スタックが提供されない可能性があります。ネイティブ メソッド スタックがサポートされている場合、このスタックは通常、スレッドの作成時にスレッドごとに割り当てられます。 Java 仮想マシン仕様では、ネイティブ メソッド スタックを固定サイズとして実装したり、計算に基づいて動的に拡大および縮小したりすることができます。固定サイズのネイティブ メソッド スタックを使用する場合、スタックの作成時に各スレッドのネイティブ メソッド スタック容量を個別に選択できます。 Java 仮想マシンの実装では、プログラマーまたはエンド ユーザーにネイティブ メソッド スタックの初期容量を調整する手段を提供する必要があります。動的に拡張および縮小できるメソッド領域の場合、実装では最大容量と最小容量を調整する手段を提供する必要があります。 ローカル メソッド スタックでは次の例外が発生する可能性があります。
|
<<: アリババクラウド社長胡暁明:何百万人もの開発者とともにクラウドコンピューティングの未来を定義する
>>: 通信ベンダーがクラウド コンピューティングの発展を迅速に追跡する必要があるのはなぜですか?
アリババの上場は数え切れないほどの憶測を呼び、その評価額は2000億ドルに達し、多くの人々を羨ましが...
誰もが美を愛するのなら、富を愛するのは才能のある人だけではないはずです。動物にも食料を蓄えたり、物を...
10 年以上の歴史を持つアメリカの一流ホスティング会社 Dreamhost が、ランプ環境、無制限の...
M247はM24Sevenグループに所属し、2000年に営業を開始しました。m247は200人以上の...
SEOを理解していない人がよく言うのは、「SEOなんて簡単。外部リンクを貼って記事を毎日更新するだけ...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますSEO 基...
コンテンツは王様、外部リンクは女王です。SEO に携わる人なら誰でもこのことを知っています。オンサイ...
この記事は、Kubernetes の基本原理をより深く理解するために、学習目的で Kubernete...
映画「パシフィック・リム」からのマーケティングマーケティングと電話にはどのような関係があるのでしょう...
インターネット マーケティングは常にソーシャル ネットワーキング プラットフォームと切り離せないもの...
北京時間8月9日、 Weiboの株価は史上最高値に達し、時価総額は200億ドルを超えた。前四半期にユ...
gmhost はウクライナの商人で、2009 年に設立されました。RIPE NCC および Micr...
1. HPA PaaSとは注: HP APaaS には、ゼロ コード、ロー コード プラットフォーム...
SEO の範囲は広く、多くの要素が関係しています。数式で表現するのはそれほど簡単ではありません。数日...
ウェブマスターの皆さん、ウェブサイトの構造を最適化する際には、当然のことながらウェブサイトの重量を考...