4.native,本地方法栈,本地方法接口,本地方法库|方法区

native

  • start0

    private native void start0();
    

    native:凡是带了native关键字的,说明java的作用范围达不到了。去调用C/C++代码。

    会进入本地方法栈

  • 本地方法接口(JNI,Java Native Interface)

  • JNI作用,扩展Java的使用,想让C/C++编程语言为Java所用。

  • 它在内存区域中专门开辟了标记区域:Native Method Stack(本地方法栈),登记native方法

  • 在最终执行的时候,通过JNI,加载本地方法库中的方法。

例如,使用Java操作打印机等硬件资源。一般遇不到这种操作。

那么问题是调用其他语言的方案都要这样吗?自然是不。

  • 解决方案:调用其他接口
    • 比如,Socket实现网络通信,http等等协议。消除语言障碍。

方法区(重点,就是下面的一句话)

  • 方法区被所有线程共享,所有字段和方法字节码,以及一些特殊方法,如构造函数。

  • 所有定义方法的信息都保存在该区域,此区域属于共享区域(毕竟方法只需要一份就够了,多了就是资源浪费!)。

  • 静态变量,常量,类信息(构造方法,接口定义),运行时的常量池存在方法区中,但是实例变量存在堆内存中,和方法区无关。实例的引用放在栈

    static,final,Calss模板,常量池->方法区中

    实例变量->堆中

    实例的引用->栈中

参考自狂神说

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值