2016-07-27 11 views
1

Ich verstehe, wie JVM Java Heap aus verfügbaren nativen Heap erstellt von OS erstellt.Was ist das Mapping von Java-Stack mit nativem Speicher.

Für jeden nativen Prozess wie JVM (java.exe), OS reserviert Adressraum, der in mehrere Bereiche wie Heap, Stack, Daten usw. unterteilt ist. '

In gleicher Weise etwas JVM einig Adreßraum zum Ausführen von Java-Programm ordnet (byecode), die Java-Heap umfasst, Stack usw.

verstand ich, dass Java-Heap ist Teil nativer Heap (von OS zu JVM vorgesehen (java.exe))

Aber ich bin nicht in der Lage zu verstehen, wo ist das "Stapel" Teil kommen.

Ist es der Teil des nativen Heap? Ist es Teil des nativen Stacks, genau wie Java Heap Teil des nativen Heap ist?

Genau wie Java Heap vs Native Heap, haben wir nicht Java Stack vs native Stack?

bitte helfen Sie mir. Ich habe wirklich Mühe, Stack-Speicher in Java zu verstehen.

+0

Mögliches Duplikat von [diese Frage] (http://stackoverflow.com/questions/38605147/how-does-jvm-uses-native-stack-manual-for-java-function-call) und auch [dieses ] (https://stackoverflow.com/questions/16264118/how-jvm-stack-heap-and-threads-are-map-to-physical-memory-or-operation-syste?rq=1) – the8472

+0

Mögliches Duplikat von [Was und wo sind Stapel und Heap?] (Http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap) – Rupsingh

Antwort

3

Konzeptionell, wenn java.exe startet, erhält das Programm einen Speicherblock vom Betriebssystem. Ein Teil dieses Speicherblocks wird von java.exe selbst verwendet. Ein anderer Teil ist für String-Konstanten. Der Rest ist für den Haufen. Wenn ein neuer Thread gestartet wird, wird diesem Thread Speicher aus dem Heap für seinen Stack zugewiesen. Auf diese Weise unterscheidet sich der (Thread-) Stack konzeptionell nicht von der Erstellung eines anderen Objekts auf dem Heap.

Ich hoffe, dass dies für Sie aufklärt.

Verwandte Themen