【问题标题】:What is the Mapping Of Java Stack with Native memory.Java 堆栈与本机内存的映射是什么。
【发布时间】:2016-12-01 21:20:54
【问题描述】:

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

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

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

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

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

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

就像Java Heap vs Native Heap,我们不是有Java Stack vs Native Stack吗?

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

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2011-06-25
    • 2013-03-13
    • 2018-08-08
    • 2011-01-22
    相关资源
    最近更新 更多