微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JVM-NativeMethod 方法区 程序计数器

native:凡是带了native关键字的,说明java的作用范围达不到了,会去调用底层C语言的库。

加上native的语句:

JNI的作用:扩展Java的使用 融合不同的编程语言为Java所用

产生的历史:因为Java刚出现时C,C++横行,Java语言必须有调用C,C++代码方法,所以native诞生了

JVM在内存中专门开辟了一块标记区域:Native Method Stack 登记native方法 在最终执行的时候,加载本地方法库中的方法通过JNI

在这里插入图片描述

方法区(Method Area):

方法区是被所有线程共享,所有字段和方法字节码,以及一些特殊方法,如:构造函数,接口代码也在此定义,简单说,所有定义的方法的信息都保存在该区域,此区域属于共享空间

静态变量(static)、常量(final)、类信息Class(构造方法、接口定义)、运行时的常量池存在于方法区中,但是实例变量存在于堆内存中,和方法区无关 (jdk8后 常量池放在了堆里)

在这里插入图片描述

PC寄存器:

程序计数器:Program Counter Register

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

程序计数器就是每个线程代码在执行时,代码要一条一条执行,每次读下一条代码时,程序计数器就+1。占用内存非常小。
这就是线程条条有序的原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐