JVM方法调用

JVM方法调用

以下内容基本上是对于[1]的整理和一些补充。

下面的内容以x86为例,其他平台下会有所不同,可能有一些内容暂时还不好理解,不过配合其他内容多看几遍应该还是不成问题的。

首先来看看解释器栈的结构和编译方法栈的结构,先将图放在这里方便用来参考。

和解释器栈布局有关的文件是src/hotspot/cpu/x86/frame_x86.hpp,里面规定了每个解释器栈帧中的固定槽位中放置了那些信息,栈帧中有两个非固定的部分,一个是monitor部分,另外一个是运算数栈部分。

interpreter-stackframe.drawio

至于JNI的栈帧,就是c++栈的结构,所以取决于系统的ABI,所以从JNI到java方法的调用中间有转化,最常见的一个JNI调用java方法就是对main方法的调用。先把栈的布局放在这里,下面再来说如何进行的调用吧。

参考资料

[1] 鸠摩(马智) - 博客园

posted @ 2022-09-21 22:47  aana  阅读(93)  评论(0编辑  收藏  举报