CPU、プロセス、スレッド、スタック、ヒープ、メソッド領域の関係(JAVA)

1.どのようなスレッドがありますか?どのようなプロセスがありますか?

スレッドは、スレッド自体が独立した存在。れないが、物理的プロセスであり
、アクティブデータセット上で実行されるプロセス・コードのシステム・リソースの割り当てと基本単位の量をスケジューリング、スレッドは、実行プロセスのパスです。少なくとも一つのプロセスの複数のスレッドは、プロセス、リソース、プロセス内のスレッドを共有します。

リソースの割り当て時に、オペレーティング・システムは、プロセスに割り当てられたリソースであり、むしろ特殊なCPUリソースは、それがスレッドに割り当てられます。本当にスレッドを実行するCPUを占有したいので、また、スレッドはCPUの基本単位であると述べました。

2.プロセスとスレッドとの間の関係を

実際には主な機能は、スレッドは、メインスレッドとして知られているプロセスのスレッド、ある主な機能ながら、JVMのプロセスを開始するときに、我々は、開始のJavaでは。


13226573-23dd01877d88cfba.png
プロセスとスレッドの関係

プロセスは複数のスレッドを有する、複数のスレッドは、プロセスヒープおよびメソッド領域内のリソースを共有します。しかし、各スレッドは、独自のプログラムカウンタとスタック領域を持っています。

プログラムカウンタは、最終的なスレッドプライベートでは、実行される現在の命令アドレスロギングスレッドのメモリ領域です。
CPUは、一般的に、スレッドのポーリング占領するようにラウンドロビン方式を使用するので、現在のスレッドのCPU時間のスライスがなくなった後は、CPUを行います。実行後、次のポーリング時間まで待って。
スレッドが出す時にプログラムカウンタが記録されていますCPUがアドレスを行う際に、フィルムのスレッドは、独自のプライベートカウンター上の指定されたアドレスから実行を継続することができ、次回まで待たなければ再分配。

3. Javaのネイティブメソッド

簡単に言えば、ネイティブメソッドは、非コールインターフェースJavaのJavaコードです。方法を実施するようC.として、非Java言語により実現される:ネイティブメソッドは、メソッドのJavaであります この機能は、Javaに特有のものではない、他の多くのプログラミング言語は、C ++のように、このメカニズムを持っている、あなたはのC関数を呼び出すC ++コンパイラに知らせるにextern「C」を使用することができます。

導入後のネイティブな方法は、カウンタPCレコードが未定義のアドレスであれば、カウンタPCの唯一の実装は、ときのためのJavaコードが記録された上記プログラムカウンタの実装に続いて、ネイティブメソッドの上にある
次の命令のアドレス。

また、各スレッドは、そのスレッドローカル変数を格納するための独自のスタックのリソースを持って、これらのローカル変数はラインである
枝に加えてチェン民間、他のスレッドがアクセスすることはできませんが、また、コールスタックのスレッドを格納するために使用されますフレーム。
プロセス・ヒープは、メモリの最大部分は、すべてのスレッドが共有のプロセスにあるヒープある分割を作成する処理である
メインストレージ・オブジェクト・インスタンス内のヒープと、新しい演算子を使用して作成されます。
メソッド領域は、情報のカテゴリ、例えばJVM静的荷重などの定数および変数を格納するために使用され、それはスレッドで共有されています。

おすすめ

転載: blog.csdn.net/weixin_33873846/article/details/91013955