您的位置 首页 java

jvm——本地方法栈

概念

作用

java虚拟机 调用本地方法时,需要给这个本地方法提供的内存空间。
本地方法翻译过来 Native Method ,在这里是指不是由java代码编写的方法,因为java代码有一定的限制,java有时候不能和操作系统底层交互,所以就需要使用 C 或者 C++ 等一些别的语言和操作系统进行交互,然后由java代码调用这些封装好的本地方法接口间接和操作系统进行交互。

java代码使用情况

最典型的使用地方就是所有的父类 Object
object clone 方法声明就是 native ,会发现在java源码中所有的 native 方法是没有方法实现的,它所有的实现都是由其它语言进行编写的比如 C 语言, java 通过 clone 方法接口去进行调用 C 和**C++**的方法实现。

jvm——本地方法栈

这样的方法在java源码中很多,比如 object hashCode 方法, notify 方法等。

特点

会存在溢出的情况

1. 如果 线程 请求的栈深度大于虚拟机允许的最大深度时,将会抛出 StackOverflowError 异常
2. 如果虚拟机的栈内存允许动态扩展,当扩展栈容量无法申请到足够的内存时,将抛出 OutOfMemory Error 异常。

线程私有的

为了保证线程中的局部变量不被别的线程访问到,所以虚拟机栈和本地方法栈是线程私有的。

扩展

jvm规范 中允许java虚拟机实现自行选择是否支持栈的扩展,而Hot-spot虚拟机不支持扩展,所以除非在创建线程申请内存时就因无法获得足够内存而出现 OutOfMemoryError 异常,否则在线程运行时是不会因为扩展而导致内存溢出的,只会因为栈容量无法 容纳新的栈帧而导致 StackOverflowError 异常。

文章来源:智云一二三科技

文章标题:jvm——本地方法栈

文章地址:https://www.zhihuclub.com/196467.shtml

关于作者: 智云科技

热门文章

网站地图