本地方法栈
当一个线程调用native方法时,它就进入了一个不受java 虚拟机限制的世界。它可以使用本地处理器的寄存器,在任何数量的本地堆上分配内存或者使用任意类型的栈。本地方法接口会使用某种类型的本地方法栈,当线程调用java方法时,虚拟机创建一个帧并把它push到java栈中,当线程调用natvie方法时,线程不会将新的帧push到线程的java栈中,java虚拟机会只是动态连接到native方法并直接调用它。
一个本地方法可能会调用一个java方法,在这种情况下,线程会离开本地方法栈并且进入另一个java栈中。下图描述了线程调用一个native方法,然后在native方法中回调另一个java方法。