Java栈与本地内存的映射是什么?

3
我了解JVM如何利用操作系统提供的本地堆来创建java堆。
对于像JVM(java.exe)这样的本地进程,操作系统会分配地址空间,其中包括堆、栈、数据等多个区域。
类似地,JVM为正在运行的Java程序(字节码)分配了一些地址空间,包括Java堆、栈等。
我明白Java堆是本地堆的一部分(由操作系统提供给JVM(java.exe))。
但我无法理解这个“stack”部分来自哪里。
它是本地堆的一部分吗? 它是本地堆栈的一部分,就像Java堆是本地堆的一部分一样吗?
就像Java堆与本地堆一样,我们是否也有Java栈与本地栈?
请帮帮我。我真的很难理解Java中的堆栈内存。

可能是这个问题的重复,并且也是这个问题的重复。 - the8472
可能是堆栈和堆在哪里?的重复问题。 - Rupsingh
1个回答

3

从概念上讲,当java.exe启动时,操作系统会为程序提供一块内存。其中一部分用于java.exe自身,另一部分用于字符串常量,其余部分用于堆。当启动新线程时,该线程将从堆中获得内存以用于其堆栈。因此,(线程)堆栈在概念上与在堆上创建任何其他对象没有区别。

希望这能为您解决疑惑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接