什么是具有本机内存的Java堆栈映射。

时间:2016-07-27 18:03:08

标签: java c memory-management jvm operating-system

我理解JVM是如何从OS提供的可用本机堆中创建Java堆的。

对于任何本机进程(如JVM(java.exe)),OS会分配地址空间,该地址空间分为多个区域,如堆,堆栈,数据等。'

以同样的方式,JVM为正在运行的java程序(byecode)分配一些地址空间,其中包括java堆,堆栈等。

我知道java堆是本机堆的一部分(由OS提供给JVM(java.exe))

但是我无法理解这个“堆栈”部分来自哪里。

它是本机堆的一部分吗? 它是本机堆栈的一部分,就像java堆是本机堆的一部分一样吗?

就像Java Heap vs Native Heap一样,我们不是在使用Java Stack与本机Stack吗?

请帮帮我。我真的很难理解java中的堆栈内存。

1 个答案:

答案 0 :(得分:3)

从概念上讲,当java.exe启动时,操作系统会为程序提供一块内存。 java.exe本身使用该块内存的一部分。另一部分是字符串常量。其余的是堆。当一个新的Thread启动时,该线程将从堆中获取内存以用于其堆栈。通过这种方式,(线程)堆栈在概念上与在堆上创建任何其他对象没有什么不同。

我希望这能为你解决这个问题。