java - 堆中的 Java 执行与 c/c++ 堆栈中的执行有何不同?

标签 java c++ c heap-memory stack-memory

在 c/c++ 中,本地对象在堆栈上创建,数据从堆栈馈送到 cpu 寄存器。

在 Java 中没有堆栈,所有对象都分配在堆上,现在对于预先编写的代码,可以计算对象所需的大小,而不是为每个对象堆分配一个过大的 c c++ 风格,整个代码块被放置一下子下来。这样一来,Java 的堆性能几乎与 c/c++ 中的堆栈一样好,几乎可以媲美。

我的问题是程序如何从堆流到最终被执行?

假设我运行一个函数,将程序代码复制到内存中,程序进入堆内存后,返回程序入口点地址,我如何启动它的执行?

最佳答案

在 Java 中一个堆栈。仅仅因为对象分配在堆上并不意味着没有堆栈。执行不会发生在堆上,执行是将方法调用添加到堆栈和从堆栈中展开,就像 C/C++ 的执行流程一样。

关于java - 堆中的 Java 执行与 c/c++ 堆栈中的执行有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8916556/

相关文章:

计算 C 中整数的个数

java - 使用 Java 转换 XML 文件

java - TextView 在应用程序中不可点击

c++ - 无法移动集合迭代器

c - 我不明白为什么这个循环会卡住

可以使用 Mingw 构建 Windows 应用商店应用程序吗?

java - 将 insert 与 KeyHolder 一起使用时出现 ArrayIndexOutOfBoundsException

java - 如何在 Java 中比较字符串?

c++ - 在另一个 vector 的末尾添加一个 vector

c++ - 在 C++ 中操作成对 vector 的值之一