JVM如何手动使用本地堆栈进行JAVA函数调用
这是参考本文中的答案:JVM堆栈,堆和线程如何映射到物理内存或操作系统
它说“JVM堆栈与本地堆栈相同”,如果是这种情况,那么只要在Bytecode中有函数调用而不是JVM代码函数调用,jvm如何在此堆栈内存上分配堆栈帧。 如果在JVM代码中有函数调用,那么方法局部变量和其他方法相关的东西将被OS存储在这个本地堆栈中。 但是,如果在字节码指令中存在函数调用,JVM如何手动将本地数据存储在本地堆栈中。
每当在Bytecode中有函数调用而不是JVM代码函数调用时,jvm如何在此堆栈内存上分配堆栈帧。
JLS中没有指定JVM的具体内容。 JVM可能
就字节码而言,一个方法的不同部分可以有自己的框架,JVM可以在一个方法中分配多个框架,尽管我怀疑它实际上是这样做的。
如果在JVM代码中有函数调用,那么方法局部变量和其他方法相关的东西将被OS存储在这个本地堆栈中。
总是,除非变量被优化掉,在这种情况下它不会被存储在任何地方。
但是,如果在字节码指令中存在函数调用,JVM如何手动将本地数据存储在本地堆栈中。
字节码必须在真机上运行,并且必须使用堆栈来存储它的信息,根据它是否在解释字节码或编译的本地代码中运行,这不会发生显着变化。 唯一的区别是在减少局部变量的数量方面发生了多少优化。
链接地址: http://www.djcxy.com/p/82745.html上一篇: How Does JVM Uses Native Stack Manually For JAVA Function Call
下一篇: Pushing variables to Stack and Variables living in the Stack difference?