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