Java虚拟机(JVM)-- Native关键字,PC寄存器,方法区
Posted Z && Y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java虚拟机(JVM)-- Native关键字,PC寄存器,方法区相关的知识,希望对你有一定的参考价值。
1. Native关键字,方法区
1.1 JVM体系结构了解
JVM体系结构
JAVA语言的实现方式是:源代码以.java给出,送给编译器(比如SUN的javac(java
compiler)),产生“字节码”.class文件。字节码是一种针对某种特定执行环境可以运行
的代码,这种字节码在java虚拟机JVM(Java Virtual Machine)上执行,执行方式
是“解释执行”或“即时编译”。
也可以看这里
1.2 Native关键字
凡是带了native 关键字的,说明java的作用范围达不到了,回去调用底层c语言的库!
会进入本地方法栈调用本地方法本地接口JNI
JNI作用:扩展ava的使用,融合不同的编程语言为Java所用!最初: C、C++。
Java诞生的时候C、C++横行,想要立足,必须要有调用c、C++的程序
它在内存区域中专门开辟了一块标记区域:Native Method Stack,登记native方法。
在最终执行的时候,加载本地方法库中的方法通过JNI
应用:
Java程序驱动打印机,管理系统,掌握即可,在企业级应用中较为少见。
1.3 PC寄存器
程序计数器: Program Counter Register 每个线程都有一个程序计数器,是线程私有的,就是一个指针, 指向方法区中的方法字节码(用来存储指向像一条指令的地址, 也即将要执行的指令代码),在执行引擎读取下一条指令, 是一个非常小的内存空间,几乎可以忽略不计
1.4 方法区(方法区也在堆中)
方法区是被所有线程共享,所有字段和方法字节码,以及一些特殊方法,如构造函数,接口
代码也在此定义,简单说,所有定义的方法的信息都保存在该区域,此区域属于共享区间;
静态变量、常量、类信息(构造方法、接口定义)、运行时的常量池存在方法区中,但是实例变量存在堆内存中,和方法区无关
以上是关于Java虚拟机(JVM)-- Native关键字,PC寄存器,方法区的主要内容,如果未能解决你的问题,请参考以下文章
JVM虚拟机宕机_java.lang.OutOfMemoryError: unable to create new native thread