定义
java虚拟机栈用于管理java应用的方法,而本地方法栈用于管理本地方法的调用。本地方法栈与虚拟机栈类似也是线程私有的,并且本身可以设置成固定大小也可扩展
调用机制
当某个线程调用一个方法时,将该方法压入虚拟机栈中,尔后此方法再调用本地方法时,会将本地方法通过动态链接的方式调用到实际的非java语言的方法。当执行本地方法时,由于可以直接跟操作系统打交道,便可以做到与jvm同样的权限,甚至可以做到如下事项:
- 通过本地方法接口访问虚拟机的内部的运行时数据区
- 可以使用本地处理器的寄存器
- 直接从本地内存的堆中分配任意数量的内存
- 需要注意的是不一定所有的vm都支持本地方法