2016-07-27 9 views
1

私は、JVMがOSによって提供される利用可能なネイティブヒープからJavaヒープをどのように作成するのか理解しています。ネイティブメモリを持つJavaスタックのマッピングとは何ですか?

JVM(java.exe)などのネイティブプロセスでは、OSはヒープ、スタック、データなどの複数の領域に分割されたアドレス空間を割り当てます。 JVMは、Javaヒープを含む実行中のJavaプログラム(byecode)にいくつかのアドレス空間を割り当てる幾分同様に

、スタック等

Iは、Javaヒープは、JVMにOSによって提供されるネイティブ・ヒープ((の一部であることが理解java.exe))

しかし、私はこの "スタック"の部分がどこから来ているのか理解できません。

ネイティブヒープの一部ですか? Javaヒープがネイティブヒープの一部と同じように、ネイティブスタックの一部ですか?

Javaヒープとネイティブヒープのように、Java Stack対ネイティブスタックはありませんか?

私を助けてください。私は本当にJavaのスタックメモリを理解するために苦労しています。

+0

[この質問の可能な重複](http://stackoverflow.com/questions/38605147/how-does-jvm-uses-native-stack-manually-for-java-function-call)と[この1つ](https://stackoverflow.com/questions/16264118/how-jvm-stack-heap-and-threads-are-mapped-to-physical-memory-or-operation-syste?rq=1) – the8472

+0

可能な複製[スタックとヒープの内容と場所はどこですか?](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap) – Rupsingh

答えて

3

概念的には、java.exeが起動すると、プログラムはOSによってメモリブロックを与えられます。そのメモリブロックの一部は、java.exe自体によって使用されます。別の部分は文字列定数です。残りはヒープです。新しいスレッドが開始されると、そのスレッドはそのスタックに使用するためにヒープからメモリを与えられます。そのようにして、(スレッド)スタックは概念上、ヒープ上に他のオブジェクトを作成することと変わりありません。

これがこれをクリアすることを希望します。

関連する問題