jvm本地方法栈

本地方法栈    Native Method Stacks

    
需求:    java代码有限制,有时候不能直接和底层操作系统交互,所以需要调用本地方法来处理一些问题    
    jvm中方法调用一定要用到方法栈,所以就有了本地方法栈


    本地方法栈可通过本地方法接口(JNI)访问虚拟机内部的运行时数据区,也可直接操作本地内存和寄存器。

    
作用:    为了实现与操作系统或硬件的交互,或者提高程序的性能和效率。


特点:
    本地方法栈与虚拟机栈的功能和结构非常相似,都由多个栈帧组成,每个栈帧对应一个方法的调用和执行。    栈帧中包含了局部变量表、操作数栈、动态链接、方法出口等信息,是方法执行过程中的各种数据。
    本地方法栈也遵循先进后出原则,
        方法被调用时,会创建新的栈帧并压入栈顶,方法执行结束时,会弹出栈顶的栈帧并返回结果。

    本地方法栈的大小可以是固定的或动态扩展的,
        如果栈的深度超过了虚拟机允许的最大深度,就会抛出StackOverflowError异常;
        如果在扩展栈时无法申请到足够的内存,就会抛出OutOfMemoryError异常。

    本地方法栈是线程私有的,与线程的生命周期同步,不会存在垃圾回收问题。

native关键字:

    native修饰的方法,一般是用c或者cpp写的,这些方法是本地方法,可以被java调用


    本地方法栈执行一些本地方法,其他与方法栈相同


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值