当前位置: 首页 > 知识库问答 >
问题:

JVM如何手动使用本机堆栈进行JAVA函数调用

陆文博
2023-03-14

它说“jvm堆栈与本机堆栈相同”,如果是这样的话,那么当字节码中有函数调用而不是jvm代码函数调用时,jvm如何在堆栈内存上分配堆栈帧。如果JVM代码中有一个函数调用,那么方法、局部变量和其他与方法相关的东西将由OS存储在本机堆栈中。但是,如果字节码指令中有一个函数调用,JVM如何手动将本地文件存储在本机堆栈中。

共有1个答案

柴辰阳
2023-03-14

每当字节码中有函数调用而不是jvm代码函数调用时,jvm如何在堆栈内存上分配堆栈帧。

JVM在JLS中没有指定的内容。JVM可能

  • 分配堆栈帧。
  • 重用叶方法的现有堆栈帧。
  • 内联方法,这样它就不需要自己的框架。
 类似资料:
  • 本文向大家介绍Java虚拟机JVM堆栈区,包括了Java虚拟机JVM堆栈区的使用技巧和注意事项,需要的朋友参考一下 以下是了解JVM堆栈区域的一些关键点- 在创建线程期间,Java虚拟机将创建一个单独的堆栈。 JVM在此堆栈上仅执行两个操作。操作是推入(即插入)和弹出(即删除)。 当前正在执行线程时,与其关联的堆栈称为运行时堆栈。 线程完成的每个方法调用,中间计算,局部变量的分配,调用参数等都作为

  • 问题内容: 可以通过Java中的JNA接口调用C方法。我的问题是,如何使用Go达到相同的功能? 问题答案: 阅读有关Go Shared Libraries 的文档后 下面是一个简短的示例,可以集成Java Spring Batch中的调用Golang函数: Golang函数: 之后,执行命令生成二进制文件: 这将生成二进制文件: 最后,创建JNA类: 之后,从Main Java类中执行Result

  • 问题内容: 我有一个堆栈A,我想创建一个与堆栈A相同的堆栈B。​​我不希望堆栈B只是指向A的指针- 我实际上是想创建一个包含相同元素的新堆栈B堆栈A的顺序与堆栈A相同。堆栈A是字符串的堆栈。 谢谢! 问题答案: 只需使用Stack类的clone()方法(它实现Cloneable)。 这是一个使用JUnit的简单测试用例: 编辑: tmsimont:这会为我创建“未经检查或不安全的操作”警告。有什么

  • 问题内容: 每当加载一个类时,什么存储在堆中以及什么存储在堆栈中? 线程也驻留在哪里? 问题答案: 引用类型在堆中。 任何原始类型的数据和对堆上值(方法的参数/局部变量)的引用都在堆栈上。 每个线程都有自己的堆栈。 应用程序中的所有线程共享同一堆。

  • 函数堆栈 栈是一个很重要的编程概念(编译课和程序设计课都讲过相关内容),与编译器和编程语言有紧密的联系。理解调用栈最重要的两点是:栈的结构,EBP寄存器的作用。一个函数调用动作可分解为:零到多个PUSH指令(用于参数入栈),一个CALL指令。CALL指令内部其实还暗含了一个将返回地址(即CALL指令下一条指令的地址)压栈的动作(由硬件完成)。几乎所有本地编译器都会在每个函数体之前插入类似如下的汇编

  • 我来自C/C++背景,在这里一个进程内存分为: null 我想把我的注意力集中在这一点上,当我阅读JVM中的堆和堆栈时,我们是在谈论堆栈和堆的概念吗?并且整个JVM的实际内存驻留在堆上(这里指的是堆的C++概念)?