java - 什么是 Java 堆栈与 native 内存的映射。

标签 java c memory-management jvm operating-system

我了解 JVM 如何从操作系统提供的可用 native 堆中创建 Java 堆。

对于像 JVM(java.exe) 这样的任何 native 进程,操作系统分配地址空间,地址空间被划分为多个区域,如堆、堆栈、数据等。'

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

我知道 java 堆是 native 堆的一部分(由操作系统提供给 JVM(java.exe))

但我无法理解这个“stack”部分是从哪里来的。

是native heap的部分吗? 它是 native 堆栈的一部分,就像 java 堆是 native 堆的一部分一样吗?

就像 Java Heap 和 Native Heap 一样,我们不是有 Java Stack 和 Native Stack 吗?

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

最佳答案

从概念上讲,当 java.exe 启动时,操作系统会为程序分配一 block 内存。该内存块的一部分由 java.exe 本身使用。另一部分是字符串常量。剩下的就是堆。当一个新线程启动时,该线程将从堆中获得内存以用于其堆栈。这样,(线程)堆栈在概念上与在堆上创建任何其他对象没有什么不同。

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

关于java - 什么是 Java 堆栈与 native 内存的映射。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38620166/

相关文章:

java - 使用java的Azure文件图像路径

ios - 优化捕获列表

C++字符串实现

java - 我们如何使用可变引用来保持类的不可变性

java - 如何下载azure函数应用程序的代码

c - 如何在 C 中初始化 3d 数组 - 指针数组数组

C、memset双数组失败

c - Valgrind 对写入的未初始化值大喊大叫

iphone - IOS:生物体的内存问题和

java - 哪个是在 lucene 中索引 boolean 值的最佳选择?