blog

JVM-ランタイム・データ領域-ネイティブ・メソッド・スタック

ネイティブ・メソッド・スタックもスレッドプライベートです。 固定または動的に拡張可能なメモリー・サイズで実装することができます。 スレッドがネイティブ・メソッド・スタックの最大許容サイズを超えるスタッ...

Dec 8, 2020 · 2 min. read
シェア
  • Java VMスタックはJavaメソッド・コールを管理するために使用され、ネイティブ・メソッド・スタックはネイティブ・メソッド・コールを管理するために使用されます
  • スレッドプライベートでもあるローカル・メソッド・スタック。
  • 固定または動的に拡張可能なメモリサイズとして実装可能。(メモリ・オーバーフローに関しては、Java 仮想マシンのスタックと同じ状況です)。
    • スレッドがローカル・メソッド・スタックの最大許容サイズを超えるスタック割り当てを要求すると、Java 仮想マシンは StackOverFlowError 例外をスローします。
    • ローカル・メソッド・スタックが動的に拡張可能で、それを拡張しようとするときに十分なメモリを要求できない場合、または新しいスレッドを作成するときに対応するローカル・メソッド・スタックを作成するのに十分なメモリがない場合、Java 仮想マシンは OutOfMemoryError 例外をスローします。
  • ローカルメソッドは、C
  • スレッドがローカル・メソッドを呼び出すと、そのスレッドはVMによって制限されなくなった新しい世界に入ります。スレッドはVMと同じ権限を持ちます。
    • ローカル・メソッドは、ローカル・メソッド・インターフェースを介して、仮想マシン内部のランタイム・データ領域にアクセスできます。
    • ローカル・プロセッサのレジスタを直接使用することもできます。
    • ローカル・メモリー・ヒープから直接、任意の量のメモリーを割り当てます。
  • すべてのJVMがネイティブ・メソッドをサポートしているわけではありません。これは、Java仮想マシンの仕様が、ネイティブ・メソッド・スタックの言語、特定の実装、データ構造などの使用を明示的に要求していないためです。JVM製品がネイティブ・メソッドをサポートするつもりがなければ、ネイティブ・メソッド・スタックを実装する必要もありません。
Read next

CanalとFlinkをベースにしたデータのリアルタイムインクリメンタル同期の実装(2つ)

本記事では、主にBinlogリアルタイム収集とオフライン処理Binlogビジネスデータを復元するための2つの側面に焦点を当て、Hive数ウェアハウスに正確かつ効率的にDBデータを実現する方法を紹介します。 データウェアハウスのモデリングでは、何も処理せずに生のビジネス層のデータは、ODSデータと呼ばれています。インターネット企業では、一般的なODS...

Dec 8, 2020 · 8 min read