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

Jvm(11),运行时数据---独占区---本地方法栈

Java虚拟机JVM详解

JVM--Java虚拟机

JVM--Java虚拟机

JVM--Java虚拟机