JVM(4)native 关键字,pc寄存器与方法区

native关键字

1.native是什么
简单地讲,一个Native Method就是一个java调用非java代码的接口,即调用底层的c 与c++(为了能在那个c,c++横行的年代,不得不能够调用)。换种说法就是,凡是带了native关键字,java语言就作用不到了。

2.怎么调用c,c++
在jvm中单独开辟了一块内存native method stack,用来标识native方法,native方法通过调用本地方法接口(JNI)来调用本地方法库,即调用c或则c++。

3.什么是JNI
JNI:java native interface ,java 本地方法接口。用来扩展java的使用,融合不同的语言为java所用。

pc寄存器

  • 每个线程启动的时候,都会创建一个PC(Program Counter,程序计数器)寄存器。PC寄存器里保存有当前正在执行的JVM指令的地址。 每一个线程都有它自己的PC寄存器,也是该线程启动时创建的。保存下一条将要执行的指令地址的寄存器是 :PC寄存器。PC寄存器的内容总是指向下一条将被执行指令的地址,这里的地址可以是一个本地指针,也可以是在方法区中相对应于该方法起始指令的偏移量。

  • 每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储指向下一条指令的地址,也即将要执行的指令代码),由执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记。

  • 这块内存区域很小,它是当前线程所执行的字节码的行号指示器,字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码指令。

  • 如果执行的是一个Native方法,那这个计数器是空的。

方法区

方法区一般存着 静态变量(static),常量(final),Class类信息,常量池。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值