Native 方法区
一:什么是Native
当我们的一个类里面出现下面的的时候,我们原本自己定义不加native这样的是不行的,但是加上native后就可以了这是为什么呢?
private native void start0();
//native 凡是带了native的关键字,说明java的的作用就达不到了,回去调用底层c语言的库
//会进入本地方法栈,本地方法栈会调用本地方法接口(JNI),然后本地方法接口到本地方法库(扩展作用)
//JNI的作用:扩展java的使用,融合不同的编程语言为java所用;最初c 和c++
//java诞生的时候 c,c++ ,我们想要一些运行,必须调用c ,c++的程序
//在最终执行的时候,加载本地方法库中的方法通过JNI
//列:java程序驱动打印机
当调用其它的接口:socket ,webService -,http-
二:PC寄存器
程序技术器:
每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储指向像一条指令的地址,也指向即将要执行的指令代码),在执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不计。
三:方法区
方法区是被所有线程共享,所有字段和方法字节码,以及一些特殊方法,如构造方法,接口代码也在此定义,简单说,所有定义的方法的信息都保存在该区域,此区域属于共享区间;
静态变量,常量,类信息(构造方法,接口定义),运行时的常量池存在方法区,但是实例变量存储在堆内存中,和方法区无关。