深入Java虚拟机——本地方法栈.docVIP

  • 3
  • 0
  • 约 10页
  • 2015-09-23 发布于江苏
  • 举报
深入Java虚拟机——本地方法栈.doc

深入Java虚拟机——本地方法栈 本地方法栈 前 面提到的所有运行时数据区都是在Java虚拟机规范中明确定义的,除此之外,对于一个运行中的Java程序而言,它还可能会用到一些跟本地方法相关的数据 区。当某个线程调用一个本地方法时,它就进入了一个全新的并且不再受虚拟机限制的世界。本地方法可以通过本地方法接口来访问虚拟机的运行时数据区,但不止 于此,它还可以做任何它想做的事情。比如它甚至可以直接使用本地处理器中的寄存器,或者直接从本地内存的堆中分配任意数量的内存等等。总之,它和虚拟机拥 有同样的权限(或者说能力)。 本地方法本质上是依赖于实现的,虚拟机实现的设计者们可以自由地决定使用怎样的机制来让Java程序调用本地方法。 任 何本地方法接口都会使用某种本地方法栈。当线程调用Java方法时,虚拟机会创建一个新的栈帧并压入Java栈。然而当它调用的是本地方法时,虚拟机会保 持Java栈不变,不再在线程的Java栈中压入新的帧,虚拟机只是简单地动态链接并直接调用指定的本地方法。可以把这看作是虚拟机利用本地方法来动态扩 展自己。就如共Java虚拟机是的实现在按照其中运行的Java程序的吩咐,调用属于虚拟机内部的另一(动态链接的)方法。 如果某个虚拟机 实现的本地方法接口是使用C连接模型的话,那么它的本地方法栈就是C栈。我们知道,当C程序调用一个C函数时,其栈操作都是确定的。传递给该函数的参数

文档评论(0)

1亿VIP精品文档

相关文档